当前位置: 首页 > news >正文

基于Windows API DialogBox的对话框

在C++中,DialogBox函数是Windows API的一部分,它用于在Win32应用程序中创建并显示一个模态对话框。DialogBox函数是USER32.DLL中的一个导出函数,因此你需要在你的C++ Win32应用程序中链接到这个库。

#include "framework.h"
#include "resource.h"INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow)
{DialogBox(NULL, MAKEINTRESOURCE(ID_MAIN), NULL, &DialogProc);return 0;
}INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{switch (message){case WM_INITDIALOG:MessageBoxW(NULL, L"首次加载", L"标题", 0);break;case WM_CLOSE:MessageBoxW(NULL, L"关闭对话框", L"标题", 0);EndDialog(hwndDlg, NULL);break;case WM_COMMAND:switch (LOWORD(wParam)){case IDOK:MessageBoxW(NULL, L"确认按钮", L"标题", 0);break;case IDCANCEL:MessageBoxW(NULL, L"取消按钮", L"标题", 0);DestroyWindow(hwndDlg);return TRUE;}}return FALSE;
}

1

在这个例子中,DialogProc是一个回调函数,它处理对话框接收到的消息。DialogBox函数会调用这个函数来处理对话框的初始化、按钮点击等事件。

你需要使用资源编辑器(如Visual Studio的资源视图)来创建对话框模板(.rc文件),并在其中定义控件(如按钮、文本框等)。对话框模板的ID(在这个例子中是ID_MAIN)需要在你的代码中引用。

C++标准库本身并不包含DialogBox函数或任何与GUI相关的功能。这些功能都是特定于Windows API的,并且通常需要使用特定的工具(如Visual Studio)和Windows特定的编程技术来开发。

相关链接

https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-dialogboxa

http://www.lryc.cn/news/377902.html

相关文章:

  • 五十一、openlayers官网示例Layer Min/Max Resolution解析——设置图层最大分辨率,超过最大值换另一个图层显示
  • 24年计算机等级考试22个常见问题解答❗
  • obsidian制作自己的主题一文入门
  • 游戏心理学Day20
  • Serverless如何赋能餐饮行业数字化?乐凯撒思变之道
  • css系列:音频播放效果-波纹律动
  • WPF学习(1)--类与类的继承
  • Spring Boot框架的原理及应用详解(六)
  • 密码学与信息安全面试题及参考答案(2万字长文)
  • C++语法19 循环嵌套结构(for/while循环)
  • AtomicInteger原理和CAS与Synchronized(juc编程)
  • 抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版
  • 【机器学习】机器学习重要方法—— 半监督学习:理论、算法与实践
  • leetcode70 爬楼梯
  • ENVI实战—一文搞定非监督分类
  • 【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
  • 具身智能特点及实现路线
  • 重温react-04
  • lock-锁的概念
  • Docker 可用镜像源
  • MySQL 搭建主从报错 1236
  • 华为OD机试真题2024版-求幸存数之和
  • Python - 各种计算器合集【附源码】
  • 【已解决】better-scroll在PC端如何开启鼠标滚动以及如何始终显示滚动条
  • AJAX 综合案例-day2
  • 【Esp32连接微信小程序蓝牙】附Arduino源码《 返回10007 相同特征id冲突问题》
  • 并发控制技术
  • 什么是网段
  • PHP和Mysql前后端交互效果实现
  • vue小总结