Win32的程序框架(VC6.0)

来源:互联网 发布:heroku自定义域名 编辑:程序博客网 时间:2024/05/28 04:55

win32程序的框架

一个完整的winmain函数,课本里的说法是WinMain函数实现的是以下四个功能

1.      定义窗口类,设置窗口的各种属性

2.      注册窗口类,建立窗口及执行其他必要的初始化工作

3.      进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程

4.      当消息循环检索到WM_QUIT消息时终止程序运行

话说遇到一个API函数

HACCEL LoadAccelerators(      

    HINSTANCE hInstance,

    LPCTSTR lpTableName

);

这个是什么玩意儿?MSDN解释如下:The LoadAcceleratorsfunction loads the specified accelerator table. 这个函数作用是加载特定的加速表。下面我们来看看VC6.0所建立的Win32工程的WinMain函数如下

int APIENTRY WinMain(HINSTANCEhInstance,

                     HINSTANCE hPrevInstance,

                     LPSTR     lpCmdLine,

                     int       nCmdShow)//WinMain函数,程序的入口

{

    //TODO: Place code here.定义窗口类

    MSGmsg;

    HACCELhAccelTable;

 

    //Initialize global strings

    LoadString(hInstance,IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

    LoadString(hInstance,IDC_WINMAIN, szWindowClass, MAX_LOADSTRING);

    MyRegisterClass(hInstance);//注册窗口类,剩下的应该就是新建个窗口类了,在哪儿呢?会不会在这个函数里边?呃,不在,createwindow在InitInstance函数里

 

    //Perform application initialization:

    if(!InitInstance (hInstance, nCmdShow)) //这应该就是新建InitInstance窗口了,对,就是这样

    {

       returnFALSE;

    }

 

    hAccelTable= LoadAccelerators(hInstance, (LPCTSTR)IDC_WINMAIN);//调入加速键表。该函数调入指定的加速键表。可是到底是啥意思呢

 

    //Main message loop:

    while(GetMessage(&msg, NULL, 0, 0))

    {

       if(!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

       {

           TranslateMessage(&msg);

           DispatchMessage(&msg);

       }

    }//消息处理队列的循环处理loop

 

    returnmsg.wParam;

}

 

原创粉丝点击