二CREATEWINDOW是原生的WIN32函数,但是DIALOGBOX是CREATEWINDOW和EVENT+WAITSINGLEOBJECT的共同体,也就是对CREATE和信息量的封装。那个WINDOW不DESTROY信号量不释放,你的DIALOG就不会返回,这就是他同步的机制。
----------------------------------------------------------------------------
比起先register class,CreateWindow,然后GetMessage,TranslateMessage,DispatchMessage , 直接把所有工作交给DialogBox不是更方便?请问这样做有什么缺点?
20 回复次数:7
第1个回答
没什么缺点。
模态对话框有自己的消息循环。
第2个回答
这样写小程序比较快的.
第3个回答
其实对话框和普通窗口都差不多.只不过普通窗口程序需要自己定义窗口过程,而对话框系统负责,但是修改rc文件,可以把默认的窗口过程替换成用户自己的,有点忘记了,大概这样.对话框只是一个特殊的窗口.
第4个回答
没什么缺点。这样写比自己注册类简单一点,比用MFC麻烦。主要看个人爱好。
第5个回答
缺点就是自由度不够。但凡省事的,总有缺失的。
第6个回答
好用就好,管那么多优点缺点干嘛
第7个回答
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
DialogBox( hInstance, ( LPCTSTR ) IDD_DIALOG1, NULL, ( DLGPROC ) WndProc );
return 0;
}
=================================================================================================
Windows uses its own internal window procedure to process messages to a dialog box window. Windows then passes these messages to a dialog box procedure within the program that creates the dialog box.
so application cannot catch such as WM_KEYUP,WM_KEYDOWN messages in its own DialogProc.
( try to catch them)