荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Peter (小飞侠), 信区: Program
标 题: DOS下的面向对象程序设计(2)
发信站: BBS 荔园晨风站 (Thu Jan 21 21:00:11 1999), 转信
面对众多优秀的FOR WINDOWS的可视化编程软件的出现。人们越来越热衷于WINDOWS程序的
设计。因为编起来太方便了,在界面上所花的时间可大大减少。
可是,许多时候我们不得不选择DOS,如实时工业监控软件。有的涉及大量运算的程序
(如高精度算法,矩阵运算等),在DOS下的速度实在要比WINDOWS下快。DOS程序的设计,
做过的人都知道,往往核心算法做得很快,而界面会花费你一大半的时间.
可视化编程的基础是C++类概念的出现,因此在DOS下一样可实现可视化编程.发现现在
很多朋友在用C++编DOS程序时,只用类来封装数据,而不用类来封装代码.这是对类的浪费.
其实,要是你学会用类来封装代码,你就能创建自己的界面类库,从重复的界面设计工作中
解放出来.
我用如下方法实现了DOS程序界面的类库(通过消息驱动):
定义以下一个基类:
#define IsIdle 0 //空状态消息
#define MouseMove 1
#define LButtonDown 2
#define LButtonUp 3
#define RButtonDown 4
#define RButtonUp 5
#define LButtonDBClick 6
#define RButtonDBClick 7
#define KeyDown 8
#define KeyUp 9
#define Char 10
#define Timer 11
#define Quit 12
#define QueLength 20 //消息队列长度
typedef int Status;
class DOSGraApp
{
private:
int HighAdd,LowAdd; //鼠标事件处理程序的入口地址.
public:
DOSGraApp();
DOSGraApp(int Driver,int Mode);//Driver为显示驱动程序,Mode 为显示模式.
~DOSGrapp();
void run();//消息控制函数,调用本函数程序开始运作
public:
virtual void OnStart();//运行前初始化函数,可在此初始化你的变量
virtual void OnIdle();
virtual void OnLButtonDown(int x,int y,Status RButtonState);
virtual void OnLButtonUp(int x,int y,Status RButtonState);
virtual void OnRButtonDown(int x,int y,Status LButtonState);
virtual void OnRButtonUp(int x,int y,Status LButtonState);
virtual void OnMouseMove(int x,int y,Status ButtonState);
virtual void OnLButtonDoubleClick(int x,int y,Status RButtonState);
virtual void OnRButtonDoubleClick(int x,int y,Status RButtonState);
virtual void OnKeyDown(char Key,int repeat,Status VKState);
virtual void OnKeyUp(char Key,int repeat,Status VKState);
virtual void OnChar(char key,int repeat,Status VKState);
virtual void OnTimer(int Information1,int Information2,int Information3);
virtual void OnQuit();
virtual void OnOther(int event,int Information1,int Information2,int
Information3);
private:
void InitMouseAndKeyboard();
void CloseMouseAndKeyboard();
};
void AddMessage(int Event,int i1=0,int i2=0,int i3=0);//往消息队列中加消息
void PostQuitMessage();//发退出消息
struct MSG{
int Event;
int Information1;
int Information2;
int Information3;
};//消息结构
--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店