RegisterClassEx、CreateWindow、DefWindowProc

来源:互联网 发布:易语言编程怎么样 编辑:程序博客网 时间:2024/06/02 01:13

RegisterClassEx::该函数为随后在调用Createwindow函数和CreatewindowEx函数中使用的窗口注册一个窗口类。

1 ,CCommon::CreateRegWnd(REG_WND_DOWNLOAD_CASE, CCommon::RegWndProc_Default);

2,HWND CCommon::CreateRegWnd( const wstring & regWndName, const RegWndProc regWndProc )
{
WNDCLASSEX wcex = {0};
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.lpfnWndProc= regWndProc;
wcex.lpszClassName= regWndName.c_str();
ATOM ret =  RegisterClassEx(&wcex);

return CreateWindow(regWndName.c_str(), NULL, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL);
}

3,LRESULT CALLBACK CCommon::RegWndProc_Default( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch (message)
{
case OTS_MSG_CLOSE:
exit(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

DefWindowProc函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理。该函数确保每一个消息得到处理。

调用DefWindowProc函数时使用窗口过程接收的相同参数。

Defwindowproc是wind32的缺省消息处理函数。要知道win32程序是消息驱动的,即程序员接收消息(主要来自于用户的界面操作如按键、鼠标点击),并处理消息。如果程序员没处理某个消息,则系统会最后替你处理:就是调用Defwindowproc。(你也能调用它)
DefWindowProc这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理。这个函数在处理关闭窗口消息WM_CLOSE时,是调用DestroyWindow函数关闭窗口并且发WM_DESTROY消息给应用程序;而它对WM_DESTROY这个消息是不处理的(考虑为什么?);我们在应用程序中对这个消息的处理是发出WM_QUIT消息。因此WM_CLOSE、WM_DESTROY、WM_QUIT这三个消息是先后产生的。

0 0