The River is Just a River  
If you're absent from my struggle,then,don't be present for my success

最近在项目中发现对windows API还是不熟悉,用到的时候只能现查,在遇到某些问题的时候由于理解不透彻还是遇到很多问题,所以,决定仔细研究一下Windows程序设计的API。

 

使用VS2010创建Windows应用程序,会生成如下4个函数:

int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR    lpCmdLine,int       nCmdShow)


ATOM MyRegisterClass(HINSTANCE hInstance)


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

 其中第一个函数当然是主函数,至于主函数奇怪的名称 _tWinMain只是WinMain的unicode版本,主函数要调用第二和第三个函数。

 第二个函数主要是设置了一个WNDCLASS的窗口属性,其中最重要的是此函数设置了窗口对应的窗口过程函数,就是第四个函数。

而第三个函数主要是调用CreateWindow创建了一个真实的窗体,并且显示。这些都完后,主函数里还有一个GetMessage函数,这个函数在一个while循环中,在应用程序的生命期内获取消息,然后使用WndProc定义的消息响应做相应的操作。

 

其中,消息循环里有两句话:

TranslateMessage(&msg);
DispatchMessage(&msg);

 第一句是将msg传递给Windows,进行一些键盘转换。

第二句是windows将该消息发送给适当的窗口过程,让它进行消息处理,也就是说,windows将调用相应的窗口过程,也就是WndProc函数。

注意:这里WndProc函数是由windows进行调用的,而不是程序调用的,而如果想在我们的程序中进行调用,windows提供了API: SendMessage, PostMessage当然两个函数在处理消息的时候有所区别。

posted on 2012-08-22 14:06  TiffanyZhou  阅读(510)  评论(0编辑  收藏  举报