WIN32 窗口以及模态弹窗创建显示

墨蓝 2022-12-19 11:41 412阅读 0赞

窗口创建

在常规界面开发中当我们设计好一个窗口类时,就要创建一个窗口实例进行显示。窗口实例分为很多种,弹出窗口,嵌套子窗口等。

  1. //1.窗口类设计
  2. WNDCLASS wc;
  3. wc.style = CS_HREDRAW | CS_VREDRAW;
  4. wc.lpfnWndProc = MYWNDPROC;
  5. wc.cbClsExtra = 0;
  6. wc.cbWndExtra = 0;
  7. wc.hInstance = hInstance;
  8. wc.hIcon = NULL;
  9. wc.hCursor = NULL;
  10. wc.hbrBackground = nullptr;
  11. wc.lpszMenuName = NULL;
  12. wc.lpszClassName = _T("MYFirstClass");

创建窗口实例

  1. HWND hwnd = CreateWindowA("MYFirstClass", "第一个创口", WS_OVERLAPPEDWINDOW, 100, 300, 500, 500, NULL,
  2. NULL,
  3. hInstance, NULL);
  4. // WS_CHILDWINDOW类别必须使用WS_VISIBLE 显示窗口否则默认隐藏,或者调用ShowWindow即可
  5. HWND hwnd2 = CreateWindowA("BUTTON", "第一个创口", WS_CHILDWINDOW|WS_VISIBLE, 100, 100, 150, 150, hwnd,
  6. NULL,
  7. hInstance, NULL);

在这里插入图片描述

模态弹出窗口创建

窗口类型大致分为两类:

  1. 模态对话框
  2. 非模态对话框

模态对话框简单理解就是会阻塞主窗口交互,必须关闭模态对话框后才能交互,且内部开始一个消息循环,阻塞代码运行。
非模态对话框就是不会阻塞用户跟主窗口交互,且不会阻塞代码调用流程。

弹出窗口开发流程:

  1. 创建弹出窗口资源
  2. 设置弹窗过程函数
  3. 弹出

创建弹出窗口资源

在这里插入图片描述
在右侧的选项栏中可以推拽选择
在这里插入图片描述

设置弹窗过程函数

  1. INT_PTR CALLBACK mydialog(HWND a, UINT b, WPARAM c, LPARAM d) {
  2. return FALSE;
  3. }

处理消息返回true,否则返回FALSE

弹出

  1. DialogBoxA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG1), hwnd, mydialog);

上面的步骤便可以简单输出我们的弹出界面,但是如果想关闭弹出的话必须监听WM_CLOSE函数,然后调用

  1. INT_PTR CALLBACK mydialog(HWND a, UINT b, WPARAM c, LPARAM d) {
  2. if (WM_CLOSE==b)
  3. {
  4. EndDialog(a, 0);
  5. return TRUE;
  6. }
  7. return FALSE;
  8. }

发表评论

表情:
评论列表 (有 0 条评论,412人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    模态窗 开发工具与关键技术:Visual Studio 2015 – 模态窗 作者:廖亚星 撰写时间:2019年 5月 25 日 在搭建页面的时候,往往会弹