代码
INT_PTR CALLBACK DialogProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_INITDIALOG :
{
MessageBox(0, L"初始化模态窗口!", L"提示", MB_OK);
return true;
}
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDCANCEL:
{
::EndDialog(hWnd, 0);
return false;
}
}
}
break ;
}
return false;
/*
返回 True 表示不再继续处理, False 表示返回消息处理函数继续处理
*/
}
{
switch (Msg)
{
case WM_INITDIALOG :
{
MessageBox(0, L"初始化模态窗口!", L"提示", MB_OK);
return true;
}
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDCANCEL:
{
::EndDialog(hWnd, 0);
return false;
}
}
}
break ;
}
return false;
/*
返回 True 表示不再继续处理, False 表示返回消息处理函数继续处理
*/
}
1
创建模态窗口 在资源窗口添加Dialog ,定义类名,Dlg 引用新加的Dialog头文件,定以新加的Dialog对象, 调用DoModal
代码
CMyDialog test; // CMyDialog 在创建资源文件时定义
test.DoModal();
API方式创建模态窗口
CMyDialog test;
HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle(NULL);
::DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), this->m_hWnd, DialogProc);
2 创建非模态
CMyDialog* test = new CMyDialog();
test->Create(IDD_DIALOG1, NULL);
test->ShowWindow(SW_SHOW);
API 方式创建
CMyDialog test;
HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle(NULL);
HANDLE handle = ::CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc); // 第3个函数 为当前窗口句柄不可切换 NULL 可切换
::ShowWindow((HWND)handle, SW_SHOW);