- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
模态与非模态对话框
模特对话框
DialogBox
函数用于创建一个模态对话框。模态对话框会阻止用户访问主窗口,直到对话框关闭。
INT_PTR DialogBox(
HINSTANCE hInstance,
LPCSTR lpTemplate,
HWND hWndParent,
DLGPROC lpDialogFunc
);
hInstance
: 应用程序实例的句柄。lpTemplate
: 对话框模板的标识符或名称。hWndParent
: 父窗口的句柄,模态对话框会阻止用户访问此窗口。lpDialogFunc
: 对话框过程函数的指针。
非模态对话框
CreateDialog
函数用于创建一个非模态对话框。非模态对话框不会阻止用户访问其他窗口。
HWND CreateDialog(
HINSTANCE hInstance,
LPCSTR lpTemplate,
HWND hWndParent,
DLGPROC lpDialogFunc
);
hInstance
: 应用程序实例的句柄。lpTemplate
: 对话框模板的标识符或名称。hWndParent
: 父窗口的句柄。lpDialogFunc
: 对话框过程函数的指针。
实例代码
#include <Windows.h>
#include "resource.h"
INT_PTR CALLBACK MainDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK ModeDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK MoleDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, MainDialogProc);
return 0;
}
INT_PTR CALLBACK MainDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CLOSE:
{
EndDialog(hwnd, 0);
return TRUE;
}
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDC_BUTTON1:
{
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG2), hwnd, ModeDialogProc);
break;
}
case IDC_BUTTON2:
{
HWND MoleHwnd = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG3), hwnd, MoleDialogProc);
ShowWindow(MoleHwnd, SW_SHOW);
break;
}
}
return TRUE;
}
default:
return FALSE;
}
}
INT_PTR CALLBACK ModeDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG:
{
return TRUE;
}
case WM_CLOSE:
{
EndDialog(hwnd, 0);
return TRUE;
}
default:
return FALSE;
}
}
INT_PTR CALLBACK MoleDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG:
{
return TRUE;
}
case WM_CLOSE:
{
DestroyWindow(hwnd);
return TRUE;
}
default:
return FALSE;
}
}