对话框过程

发送给对话框(模态和非模态)的消息是由程序中的对话框过程进行处理的。这个过程与真正的窗口过程看起来很像,但其实是不一样的,对话框的窗口过程属于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后进行相应处理。

猜你喜欢

转载自blog.csdn.net/kevin8086/article/details/50709303