Windows API 之 DialogBoxParamA
旧题回顾: Windows API 之 MessageBoxA
DialogBoxParamA
DialogBoxParamA,用于调用一个资源里的Dialog对话框 (常用于UI交互) 官方说明
原型:INT_PTR DialogBoxParamA([in, optional] HINSTANCE hInstance, //包含对话框模板的模块的句柄[in] LPCSTR lpTemplateName, //组件ID[in, optional] HWND hWndParent, //拥有对话框的窗口的句柄[in, optional] DLGPROC lpDialogFunc, //指向对话框处理过程的指针(回调函数)[in] LPARAM dwInitParam //要传递给WM_INITDIALOG消息的 LPARAM 参数中的对话框的值。(Dlgproc中的第四个参数));
用例1:DialogBoxParamA(hModule, (LPCSTR)(101), NULL, Dlgproc,123); //101是Dialog对话框的组件ID(这种写法不安全又难看),123是用于对话框初始化传参(默认为0)。
用例2:DialogBoxParamA(hModule,MAKEINTRESOURCE(IDD_DIALOG1),NULL,Dlgproc,0); //推荐使用
注意事项:
- 资源文件->右键添加->资源->Dialog
- 引入头文件 #include <Windows.h>
- 引入头文件 #include “resource.h”
- 其中用例2的IDD_DIALOG1是组件编号的ID;
Dlgproc
Dlgproc,用于处理DialogBoxParamA的消息回调事件 官方说明
函数原型:INT_PTR Dlgproc(HWND unnamedParam1, //对话框的句柄。UINT unnamedParam2, //消息(触发事件的类型)。WPARAM unnamedParam3, //其他的消息特定信息(触发的组件ID)。LPARAM unnamedParam4 //其他的消息特定信息(参数)。){return bool;}
用例:INT_PTR CALLBACK Dlgproc(HWND hModule, UINT type, WPARAM wParam, LPARAM lParam){switch (type) { //对话框初始化事件case WM_INITDIALOG:{MessageBoxA(hModule, "初始化啦!", "提示", 0);break;}case WM_COMMAND: { //触发的组件IDswitch (wParam){case IDOK: { //确认MessageBoxA(hModule, "确认!", "提示", 0);break;}case IDCANCEL: { //取消MessageBoxA(hModule, "取消!", "提示", 0);break;}default:break;}break;}case WM_CLOSE: { //对话框关闭事件break;}default://默认不做任何处理break;}return false;}
开发工具:Visual Studio 2022
开发语言:C++(空项目)
字符集环境:多字节字符集(包含了ASCII)
示例源码:https://github.com/WongHouLeong/Windows-API/tree/e33e70239cc53f18fe7e8800fce1af5bceec89aa
Windows API 之 DialogBoxParamA相关推荐
- C#中调用Windows API时的数据类型对应关系
C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...
- C#调用windows api的要点
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
- C#中调用Windows API的要点
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
- 用C#调用Windows API向指定窗口发送按键消息
为什么80%的码农都做不了架构师?>>> 用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...
- 用C#和本地Windows API操纵系统菜单
一.前言 .net框架是Windows应用领域中一个非常新的技术,可以肯定在未来的一段时间内,.NET应用必须与现存的Windows技术交互作用.这种交互作用主要体现在两个领域:COM和应用编程接口( ...
- 几个比较好用的Windows API在C#中的用法。
几个比较好用的Windows API在C#中的用法. #region Windows Api 定义 /// /// 模拟鼠标事件 /// /// 鼠标事件的Enum /// X座标 ...
- 17、Windows API 图形用户界面(1)
一.基本概念 Windows的用户界面分为两个部分:字符图形界面和图形用户界面.字符图形界面较为简单,主要内容包括如何在界面上读取用户输入,如何向界面终端输出信息.如何控制界面的字体.背景.颜色等. ...
- Windows API实现窗口居中
代码如下: //居中窗口int scrWidth, scrHeight;RECT rect;scrWidth = GetSystemMetrics(SM_CXSCREEN);scrHeight = G ...
- windows api打开文件对话框
用windows api 写打开文件对话框主要使用OPENFILENAME ,GetOpenFileName, GetSaveFileName; 1.OPENFILENAME 结构体介绍:要使用Get ...
最新文章
- qt中设置窗口左上角的图标
- 2019年十二周总结
- Git学习笔记:修改
- 基于STM32系列芯片的 IAP实现的探索
- VMWARE错误-VirtualInfrastructure.Utils.ClientsXml的类型初始值设定项引发异常
- 设计模式第19篇:访问者模式
- 基础知识(七)opencv、python、人脸框检测
- Gstreamer——搭建RTSP服务器
- 《高级无线网络—4G技术》——2.3 正交频分复用
- 输入法编程之 光标跟随
- java 文件上传(使用多线程)
- php 安装、使用sphinx
- vagrant 强制关机 Warning: Authentication failure. Retrying...
- 华为云快成长直播间大数据AI专场,加速经济物联网智能化提升
- 点评中国互联网CEO语录
- 88---Python 以符号的方式给出积分表达式,类似Mathematics
- Could not find setter for ID on class com.iflytek.civilAffairs.pojo.MzywShswcYtwy
- ROS1云课-导航实践测评
- 【WCN685X】WCN6856 5G吞吐量测试只有25Mbps问题原因分析及解决方案
- 阅读WPF揭秘前两章探索Silverlight运行的基本原理和RIA工作流程的密码(二)