WIN32 窗口以及模态弹窗创建显示
窗口创建
在常规界面开发中当我们设计好一个窗口类时,就要创建一个窗口实例进行显示。窗口实例分为很多种,弹出窗口,嵌套子窗口等。
//1.窗口类设计
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = MYWNDPROC;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = nullptr;
wc.lpszMenuName = NULL;
wc.lpszClassName = _T("MYFirstClass");
创建窗口实例
HWND hwnd = CreateWindowA("MYFirstClass", "第一个创口", WS_OVERLAPPEDWINDOW, 100, 300, 500, 500, NULL,
NULL,
hInstance, NULL);
// WS_CHILDWINDOW类别必须使用WS_VISIBLE 显示窗口否则默认隐藏,或者调用ShowWindow即可
HWND hwnd2 = CreateWindowA("BUTTON", "第一个创口", WS_CHILDWINDOW|WS_VISIBLE, 100, 100, 150, 150, hwnd,
NULL,
hInstance, NULL);
模态弹出窗口创建
窗口类型大致分为两类:
- 模态对话框
- 非模态对话框
模态对话框简单理解就是会阻塞主窗口交互,必须关闭模态对话框后才能交互,且内部开始一个消息循环,阻塞代码运行。
非模态对话框就是不会阻塞用户跟主窗口交互,且不会阻塞代码调用流程。
弹出窗口开发流程:
- 创建弹出窗口资源
- 设置弹窗过程函数
- 弹出
创建弹出窗口资源
在右侧的选项栏中可以推拽选择
设置弹窗过程函数
INT_PTR CALLBACK mydialog(HWND a, UINT b, WPARAM c, LPARAM d) {
return FALSE;
}
处理消息返回true
,否则返回FALSE
弹出
DialogBoxA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG1), hwnd, mydialog);
上面的步骤便可以简单输出我们的弹出界面,但是如果想关闭弹出的话必须监听WM_CLOSE函数,然后调用
INT_PTR CALLBACK mydialog(HWND a, UINT b, WPARAM c, LPARAM d) {
if (WM_CLOSE==b)
{
EndDialog(a, 0);
return TRUE;
}
return FALSE;
}
还没有评论,来说两句吧...