发送给对话框(模态和非模态)的消息是由程序中的对话框过程进行处理的。这个过程与真正的窗口过程看起来很像,但其实是不一样的,对话框的窗口过程属于Windows,对于许多消息,这个窗口过程会调用对话框过程。
BOOL CALLBACK DlgPro( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
{
switch(message)
{
case WM_INITDIALOG:
returm TRUE;
case XXXX_msg:
.....;
returm TRUE;
break;
}
return FALSE;
}
对话框过程与一般窗口过程的参数是一样的,而且必须被定义成CALLBACK函数。
对话框过程与一般窗口过程的区别有:
1、窗口过程的返回值是LRESULT,对话框过程的返回值是BOOL。
2、当窗口过程不处理一条消息时,它会调用DefWindowProc;当对话框处理一条消息时会返回TRUE(非零),而当它不处理一条消息时返回FALSE(零)。
3、对话框过程不需要处理WM_PAINT和WM_DESTROY消息,也不会收到WM_CREATE消息。它会在一条专门的 WM_INITDIALOG消息中进行初始化。
WM_INITDIALOG消息是对话框过程收到的第一条消息,这条消息只发送给对话框过程。当对话框过程返回TRUE时,Windows会把输入焦点设置到对话框的第一个含有WS_TABSTOP样式的子窗口控件上。
除上述消息外,对话框过程只处理WM_COMMAND消息,它会通过对WM_COMMAND消息进行 LOWORD(wParam) 操作,获得控件ID后进行相应处理。