SGWINDOW是本人在大学时候开发的C语言第三方函数库, 目标是为开发Windows界面和Windows编程模式的程序提供支持因为TC提供的东西实在太少了, 界面很不友好,又没有消息循环和事件驱动的编程体系.所以开发了这套SGWINDOW函数库,非常类似WIN SDK编程所用的API函数,但是比API更易懂,更容易使用.
SGWINDOW是用C语言基于VGA图形开发的,一共可以分成3个大模块,
一. 基本模块,为构架Windows开发模式提供最基本的,核心的服务.
[1]鼠标接口函数库(鼠标的显示,使用各种函数),
[2]图形图象函数库(在有鼠标的参与下建立新的图形开发函数库),
[3]16色,256色位图函数库(位图的显示),
[4]键盘接口函数库(键码的识别,宏)
以上这是最基本的Windows界面需要的服务.
二. 文字服务,IO服务,控制台服务
[1]支持汉字和英文同时使用. 直接能使用6种汉字字体(宋体12*12, 宋体16*16, 宋体24*24, 宋体48*48, 楷体24*24,黑体24*24),并且具备扩展性,可以由用户自己导入字体或者字模, 英文字体则是由TC的BGI提供.
[2]专门的输入法系统. 由于中英文并用, 必须开发输入法系统, SGWINDOW使用4种输入法,分别是英文,圣鸽拼音,圣鸽五笔,区位输入法, 这个输入法做的虽然简单,但是可以胜任基本的工作.本人还特意给输入法增加了一个时间显示.
[3]支持格式输入与输出. 由于采用汉字与英文混合使用的图形界面,DOS下printf函数就不能使用,因此为文字服务配套了相应的格式输入与输出函数,其功能和printf,scanf完全一致,加入中文以及他们的字体.启动scanf的时候就自动起用输入法系统.
[4]构建新的控制台子系统[SGCHN控制台].使用上面几个特征完全优化了DOS下的控制台,这个控制台可以使用鼠标定位,可以英文汉字各种字体并用,可以翻页显示,还能把控制台内容全部保存到文件中。下面是控制台程序的例子和运行画面.
/*程序示例*/
#include "savescr.c"
#include <sgchn30.h>
void main()
{
printf("Hello world!\n");
printf("世界你好!\n");
}三.SGWINDOW最高的一层就是构建的Windows界面元素和Windows编程模式
SGWINDOW打破了TC下不能编写界面友好程序的常规。 SGWINDOW利用上面大量的基础工作建立了构建Windows程序的虚拟开发环境
[1]. Windows界面元素: SGWINDOW提供了窗体,按扭,文本框,定时器,列表框,标签,工具栏,状态栏,图片框,复选框,单选框等类似Windows的控件,还提供了消息框,输入框等对话框元素.
[2]. Windows编程模式:使程序完全工作在“事件驱动,消息循环”的Windows编程模式下。SGWINDOW下开发的程序,代码非常类似windows SDK开发的程序,通过SGWINDOW的基础性工作,我开发了财务管理系统,计算器,俄罗斯方块,贪吃蛇,记事本等程序, 这些程序虽然不是真正意义上的Windows程序,但是足以达到以假乱真的效果,因为SGWINDOW模拟了16位的Windows程序开发模式。下面是最简单的SGWINDOW程序和运行画面.
/*SGWINDOW程序示例*/
#include <stdio.h>
#include <sgwindow.h> /*SGWINDOW 程序必须的头文件*/
void Dispatch_Message(WinMessage WinMsg); /*消息处理函数定义*/
wndhnd window; /*主窗体句柄*/
void main()
{
WinMessage msg; /*主消息*/
winfont wft; /*字体*/
SGWINDOWinit(); /*加载SGWINDOW*/
setfont(&wft,0,0,WIN12,0); /*设置字体*/
window = new_form(0,0,639,458,1,wft,15,"Form1","",true,true,true,32); /*设置窗体属性*/
while (TestMessageSource(window))/*当消息源存在时,进入消息循环*/
{
msg = WindowSend_Message(GetMessageSource(window));/*提取并发送消息*/
Dispatch_Message(msg); /*处理消息*/
}
}
void Dispatch_Message(WinMessage msg) /*消息处理函数*/
{
int
ObjectID = Get_MessagescrID(msg); /*获取发送消息的对象的ID号*/
int MessageType = Get_MessagescrType(msg); /*获取该消息的类型*/
switch (
ObjectID)
{
case ID_MAINFORM:/*主窗体对象*/
if (MessageType == WE_EXIT)/*主窗体发送退出消息*/
{
delete_form(&FORMPTR(window));/* 销毁主窗体*/
}
else if (MessageType == WE_FORMLOAD)/*主窗体发送加载消息*/
{
Show_Form(window);/*显示主窗体*/
Print_Form(window,"\n\n\n\t\t\t\t世界你好!Hello world!");
}
break;
}
}
为了更好得推荐作品, 我在3月份为SGWINDOW配备了一个DOS下的截屏程序,通过截取运行画面,让大家直观得认识它。
财务管理系统下载地址:http://www.programfan.com/wysoft/showwysoft.asp?id=1430
运行SGWINDOW程序还是需要安装SGWINDOW运行环境, 在下载包中有连接