荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: DOS下的面向对象程序设计(1)
发信站: BBS 荔园晨风站 (Thu Jan 21 20:59:22 1999), 转信

其中run()是控制消息的核心函数,DOSGRAPP()的作用是
初始化图形,鼠标和键盘。
这三个函数的实现如下:
void DOSGraApp::run()

int exit=0;
OnStart();
head=0;//消息队列头指针,全局变量
tail=0;    //消息队列尾指针,全局变量
while(1)
  {
  if(head==tail)
    {
    disable();
    Message[tail].Event=IsIdle;
    tail++;
    if(tail==QueLength)
      tail=0;
    enable()
    }
  else
    {
    switch(Message[head].Event)
      {
      case LButtonDown:
        OnLButtonDown(Message[head].Information1,
                 Message[head].Information2,Message[head].Information3);
        break;
          .
          .
          .
          .
      case IsIdle:
        OnIdle();
        break;
      case Quit:
        OnQuit();
        exit=1;
        break;
      default:
        OnOther(Message[head].Event,Message[head].Information1,
                 Message[head].Information2,Message[head].Information3);
      }
    if(exit==1)
      {
      break;
      }
    disable();
    head++;
    if(head==QueLength)
      head=0;
    enable();
    }
  }

}

DOSGraApp::DOSGraApp()
{
int gdriver=DETECT,gmode,errorcode;
errorcode = registerbgidriver(EGAVGA_driver);

if(errorcode<0)
  {
  printf("Graphics error:%s\n",grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
  }
registerbgifont(small_font);
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode!=grOk)
  {
  printf("Graphics error:%s\n",grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
  }
settextstyle(SMALL_FONT,HORIZ_DIR,0);
MaxColors=getmaxcolor();
WindowWidth=getmaxx()+1;
WindowHeight=getmaxy()+1;
InitMouseAndKeyboard();
}
DOSGraApp::DOSGraApp(int Driver,int Mode)
{
int gdriver=DETECT,gmode,errorcode;
errorcode = registerbgidriver(EGAVGA_driver);
if(errorcode<0)
  {
  printf("Graphics error:%s\n",grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
  }
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode!=grOk)
  {
  printf("Graphics error:%s\n",grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
  }
MaxColors=getmaxcolor();
WindowWidth=getmaxx()+1;
WindowHeight=getmaxy()+1;
InitMouseAndKeyboard();

}

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店