您的位置:首页 > 其它

显示模式对话框实例

2012-11-29 15:43 134 查看
模式对话框被创建后会立即显示出来,即使创建时没有指定WS_VISIBLE。

使用API函数DialogBox和DialogBoxParam。其中DialogBoxParam最常用。

调用EndDialog结束一个模式对话框.

对话框建立后收到的第一条消息是WM_INITDIALOG,所以对话框的初始化工作应该放在WM_INITDIALOG消息的响应函数中。

MFC中调用CDialog::DoMadal()可以创建并显示一个模式对话框。

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

新建一个简单Win32项目ModalDlg

向工程添加一个对话框资源ID为IDD_MAIN

将系统生成的ModalDlg.cpp文件改写如下:

#include "tchar.h"
#include "resource.h"

///对话框过程,处理各种消息
BOOL CALLBACK DlgProc(HWND hwndDlg ,UINT uMsg ,WPARAM wParam ,LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_CREATE:
		OutputDebugString(_T("收到了WM_Create消息\n"));
		break;
	case WM_INITDIALOG:
			OutputDebugString(_T("收到了WM_InitDialog消息\n"));
			break;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
			break;
		case IDCANCEL:
			EndDialog(hwndDlg , 1);
			return true;
		}
		break;
		case WM_CLOSE:
			EndDialog(hwndDlg , 0);
			return true;
		default:
			break;

	}
	return false;
}
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	///显示模式对话框,***并等待****,直到对话框结束才返回
	int nRet = DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_MAIN) ,NULL ,DlgProc ,0);
	///此函数的返回值是由EndDialog函数指定的,即:**nRet***的值由EndDialog指定
	switch(nRet)
	{
	case 0 :
		OutputDebugString(_T("标题栏的关闭按钮关闭了对话框\n"));
		break;
	case 1:
		OutputDebugString(_T("取消按钮关闭了对话框\n"));
		break;
	}
	return 0;
}




说明:
1、模式对话框的WinMain函数简单了许多,这是因为系统已经在后台做了许多工作,甚至在WinMain中连消息循环代码都可以省掉。

2、模式对话框的消息消息处理过程返回值为BOOL

3、实际对话框过程并没有收到WM_CREATE消息,因为WM_CREATE消息发出时,对话框框架还没有建立,这条消息被系统内部处理了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐