旧题回顾: 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); //推荐使用

注意事项:

  1. 资源文件->右键添加->资源->Dialog
  2. 引入头文件 #include <Windows.h>
  3. 引入头文件 #include “resource.h”
  4. 其中用例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相关推荐

  1. C#中调用Windows API时的数据类型对应关系

    C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...

  2. C#调用windows api的要点

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  3. C#中调用Windows API的要点

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  4. 用C#调用Windows API向指定窗口发送按键消息

    为什么80%的码农都做不了架构师?>>>    用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...

  5. 用C#和本地Windows API操纵系统菜单

    一.前言 .net框架是Windows应用领域中一个非常新的技术,可以肯定在未来的一段时间内,.NET应用必须与现存的Windows技术交互作用.这种交互作用主要体现在两个领域:COM和应用编程接口( ...

  6. 几个比较好用的Windows API在C#中的用法。

    几个比较好用的Windows API在C#中的用法. #region Windows Api 定义 ///   /// 模拟鼠标事件   ///   /// 鼠标事件的Enum   /// X座标   ...

  7. 17、Windows API 图形用户界面(1)

    一.基本概念 Windows的用户界面分为两个部分:字符图形界面和图形用户界面.字符图形界面较为简单,主要内容包括如何在界面上读取用户输入,如何向界面终端输出信息.如何控制界面的字体.背景.颜色等. ...

  8. Windows API实现窗口居中

    代码如下: //居中窗口int scrWidth, scrHeight;RECT rect;scrWidth = GetSystemMetrics(SM_CXSCREEN);scrHeight = G ...

  9. windows api打开文件对话框

    用windows api 写打开文件对话框主要使用OPENFILENAME ,GetOpenFileName, GetSaveFileName; 1.OPENFILENAME 结构体介绍:要使用Get ...

最新文章

  1. qt中设置窗口左上角的图标
  2. 2019年十二周总结
  3. Git学习笔记:修改
  4. 基于STM32系列芯片的 IAP实现的探索
  5. VMWARE错误-VirtualInfrastructure.Utils.ClientsXml的类型初始值设定项引发异常
  6. 设计模式第19篇:访问者模式
  7. 基础知识(七)opencv、python、人脸框检测
  8. Gstreamer——搭建RTSP服务器
  9. 《高级无线网络—4G技术》——2.3 正交频分复用
  10. 输入法编程之 光标跟随
  11. java 文件上传(使用多线程)
  12. php 安装、使用sphinx
  13. vagrant 强制关机 Warning: Authentication failure. Retrying...
  14. 华为云快成长直播间大数据AI专场,加速经济物联网智能化提升
  15. 点评中国互联网CEO语录
  16. 88---Python 以符号的方式给出积分表达式,类似Mathematics
  17. Could not find setter for ID on class com.iflytek.civilAffairs.pojo.MzywShswcYtwy
  18. ROS1云课-导航实践测评
  19. 【WCN685X】WCN6856 5G吞吐量测试只有25Mbps问题原因分析及解决方案
  20. 阅读WPF揭秘前两章探索Silverlight运行的基本原理和RIA工作流程的密码(二)

热门文章

  1. 宇视摄像机——枪机安装wifi天线
  2. 向上司请示汇报的程序和要点
  3. TTL和CMOS电平比较
  4. 112.网络安全渗透测试—[权限提升篇10]—[Windows 2003 LPK.DDL劫持提权msf本地提权]
  5. windows平台的剪贴板管理工具Clipx和插件
  6. 浅谈曲线的几何连续性
  7. 手机销售系统(Java源码)
  8. 修改数据文件patch工具
  9. java基础练习实例_java基础练习题(se)
  10. web前端技术体系大全