以前一直用的书上的代码,今天试了下WinMain里直接DialogBox也行。省去了那些retister class什么的,代码如下:
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
DialogBox( hInstance, ( LPCTSTR ) IDD_DIALOG1, NULL, ( DLGPROC ) WndProc );
return 0;
}
LRESULT CALLBACK WndProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg){
case WM_INITDIALOG:
{
}
break;
case WM_COMMAND:
switch(LOWORD( wParam )) {
case IDOK:
{
EndDialog( hDlg, 0 );
}
break;
};
break;
case WM_CLOSE:
EndDialog( hDlg, 0 );
break;
};
return 0;
}
第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)
用户377235 2014-3-28 10:20
3Q
用户377235 2012-10-19 00:31
用 VS2010 时,没有出现对话框!不知道怎么回事?请教