Windows图形界面(GUI)-DLG-C/C++ - 对话框的创建实现

  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​​​​链接点击跳转博客主页

目录

对话框的创建实现

使用资源编辑器设计对话框

资源文件的创建和管理

对话框过程函数

对话框消息处理

示例代码


对话框的创建实现

使用资源编辑器设计对话框
  • 使用资源编辑器设计对话框
    • 使用 Visual Studio 等 IDE 的资源编辑器可以直观地设计对话框。
    • 资源编辑器提供拖放控件、调整大小、设置属性等功能。
    • 设计完成后,生成相应的 .rc 文件和 .h 文件。
资源文件的创建和管理
  • 创建资源文件
    • 在 Visual Studio 中,右键项目 > Add > Resource... > Dialog
    • 设计对话框并保存生成的 .rc 文件。
  • 管理资源文件
    • 资源文件通常包含对话框、菜单、图标、字符串等资源。
    • 为了便于管理,可以使用多个 .rc 文件并在主 .rc 文件中包含它们。
    • 示例:在主 .rc 文件中包含其他资源文件。
对话框过程函数
  • DialogProc 是一个回调函数,用于处理对话框的消息。
  • INT_PTR CALLBACK DialogProc(HWND hDlg,    // 对话框的句柄UINT message, // 消息WPARAM wParam,// 消息特定的附加信息LPARAM lParam // 消息特定的附加信息
    );
    
  • hDlg:对话框的窗口句柄。
  • message:指示哪种类型的消息正在被处理。
  • wParamlParam:提供关于消息的额外信息,具体内容依赖于消息的类型。
对话框消息处理
  • DialogProc中,你通常会使用一个switch语句来区分和处理不同的消息。
    • WM_INITDIALOG:当对话框初始化时发送此消息。通常用来设置默认值、初始化控件等。
    • WM_COMMAND:当用户交互如点击按钮时发送此消息。根据wParam的值(通常与控件ID关联),执行相应操作。
    • WM_CLOSE:处理对话框的关闭事件。
示例代码
#include <Windows.h>
#include "resource.h"INT_PTR CALLBACK MainDlgproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{switch (msg){case WM_INITDIALOG:{MessageBox(0, TEXT("WM_INITDIALOG"), 0, 0);return TRUE;}case WM_CLOSE:{EndDialog(hwnd, 0);return TRUE;}}return FALSE;
}INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevHinstance, LPSTR lpCmdLine, INT nCmdShow)
{DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), NULL, MainDlgproc);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些资源(●ˇ∀ˇ●)

GPT Kimi.ai - 帮你看更大的世界 (moonshot.cn) 文心一言 (baidu.com) 搜索AI伙伴 (baidu.com) 讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞 (xfyun.cn) 秘塔AI搜索 (metaso.cn) GitHub打不开 下载Watt Toolkit

LeetCode 2. 两数相加 --- 链表、模拟

目录 1. 思路与算法2. 代码3. 复杂度分析 题目简述&#xff1a;给定两个非空的链表&#xff0c;表示两个非负整数&#xff0c;它们每位数字都是按照逆序方式存储的。要求将这两个数相加&#xff0c;并以相同形式返回一个表示和的链表。每个链表中的节点只能存储一位数字&#x…

openlayers WebGL裁剪图层,双图层拼接显示

本篇介绍一下使用openlayers WebGL裁剪图层&#xff0c;双图层拼接显示 1 需求 WebGL裁剪图层&#xff0c;双图层拼接显示 2 分析 图层prerender和postrender事件的使用 WebGL scissor方法的使用 scissor方法指定了一个裁剪区域&#xff0c;用来将绘图区域限制在其限定的盒…

【LeetCode】2187. 完成旅途的最少时间

1. 题意 2. 分析 二分法有一个关键特征&#xff1a;如果答案answer满足题意&#xff0c;那么对于任何整数i&#xff0c;如果有i>answer&#xff0c;那么i也会是一个存在的解&#xff0c;只不过不是最优解。 本题想要找出一个达到 totalTrips 趟需要的最少时间成本t&#x…

设计模式——多例模式(23种之外)

多例模式&#xff08;Multiton Pattern&#xff09;是一种特殊的设计模式&#xff0c;它属于创建型模式。与单例模式&#xff08;Singleton Pattern&#xff09;相比&#xff0c;多例模式允许一个类有多个实例&#xff0c;但是实例的数量是有限制的&#xff0c;并且这些实例在全…

【Linux】Ubuntu配置JDK环境、MySQL环境

一、 Ubuntu配置JDK环境 在Ubuntu系统中安装JDK 8可以通过以下步骤进行&#xff1a; 打开终端。更新包列表&#xff1a; sudo apt update安装OpenJDK 8&#xff1a; sudo apt install openjdk-8-jdk验证安装是否成功&#xff1a; java -version注&#xff1a;如果系统中安…

4.10、matlab生成脉冲序列:pulstran()函数

1、matlab生成脉冲序列简介 MATLAB生成脉冲序列通常涉及到使用MATLAB中的函数或编程来创建具有特定时间间隔和幅度的脉冲信号。脉冲序列通常用于数字信号处理、通信系统测试等应用中。 生成脉冲序列可以采用以下方法之一: 使用MATLAB中的函数,例如square()函数生成方波信号…

FreeRTOS 入门 知识

什么是FreeRTOS FreeRTOS 是一个轻量级的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;由 Richard Barry 在 2003 年开发&#xff0c;并且由亚马逊的 FreeRTOS 项目&#xff08;一个由 Amazon Web Services (AWS) 支持的开源项目&#xff09;进一步推动和发展。FreeR…

麒麟系统开发笔记(十四):在国产麒麟系统上编译libmodbus库、搭建基础开发环境和移植测试Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140387947 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

Java--接口的定义与实现

1.Java的接口是一种约束 2.定义一些方法&#xff0c;让不同的人实现 3.方法都是 public abstract 4.常量都是public static final 5.接口不能被实例化&#xff1a; 接口中没有构造方法 6.接口可以多继承&#xff1a; 使用implements即可实现 7.必须要重写接口中的方法…

什么是稀疏化

稀疏化一词来源于条件计算理念。在稠密模型中&#xff0c;所有参数都发挥作用&#xff0c;而稀疏化可以只运行整个系统的某些部分。 前文提到 Shazeer 对机器翻译中的 MoE 进行了探索。条件计算&#xff08;网络中只有某些部分处于活动状态&#xff09;使得在不增加计算量的情况…

差分进化算法与遗传算法之间的区别

差分进化算法&#xff08;Differential Evolution, DE&#xff09;和遗传算法&#xff08;Genetic Algorithm, GA&#xff09;都是基于进化思想的优化算法&#xff0c;用于全局优化问题。尽管它们有许多相似之处&#xff0c;但在具体实现和应用上有明显的区别。 共同点 种群进…

Android系统上常见的性能优化工具

Android系统上常见的性能优化工具 以下是一些常见的性能优化工具&#xff0c;可用于辅助分析 Systrace 报告&#xff1a; Android Studio Profiler&#xff1a;它集成在 Android Studio 中&#xff0c;提供了 CPU、内存、网络等多方面的性能分析功能&#xff0c;能与 Systrace…

在家上网IP地址是固定的吗?

在数字化时代&#xff0c;互联网已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们都离不开网络的支持。然而&#xff0c;当我们在家中接入互联网时&#xff0c;可能会产生这样一个疑问&#xff1a;在家上网IP地址是固定的吗&#xff1f;下面一…

SpinalHDL之实用工具(下篇)

本文作为SpinalHDL学习笔记第十四篇&#xff0c;记录使用SpinalHDL的一些实用性语法工具。 SpinalHDL学习笔记总纲链接如下&#xff1a; SpinalHDL 学习笔记_spinalhdl blackbox-CSDN博客 目录&#xff1a; 6.存根&#xff08;Stub&#xff09; 7.Assertions 8.Report 9.S…

秋招Java后端开发冲刺——MyBatisPlus总结

一、 基本知识 1. 介绍 yBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上增加了大量功能和简化操作&#xff0c;以提高开发效率。 2. 特点 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有项目产生影响。依赖少&#xff1a;仅仅依赖 …

探索 Java 8 新特性:函数式接口

Java 8 的发布为 Java 语言带来了许多重要的改进和新特性。其中&#xff0c;函数式接口&#xff08;Functional Interface&#xff09;是一个关键的概念&#xff0c;它与 Lambda 表达式紧密相关&#xff0c;为简化代码和提高可读性提供了强有力的支持。本文将深入探讨函数式接口…

数仓工具—Hive语法之正则表达式函数

正则表达式函数 之前我们介绍过like rlike regexp 这些关键字,都是和匹配有关的,今天我们介绍一下hive 的REGEXP_REPLACE 和REGEXP_EXTRACT 函数,背景是使用Hive正则表达式函数提取数字 在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则…

CV05_深度学习模块之间的缝合教学(1)

1.1 在哪里缝 测试文件&#xff1f;&#xff08;&#xff09; 训练文件&#xff1f;&#xff08;&#xff09; 模型文件&#xff1f;&#xff08;√&#xff09; 1.2 骨干网络与模块缝合 以Vision Transformer为例&#xff0c;模型文件里有很多类&#xff0c;我们只在最后…

Ubuntu 软件源404not found原因及解决办法

报错原因 404的意思是没有找到这个源。原因如下&#xff1a; 软件源链接有问题。可能是不符合你的架构的链接&#xff08;如ubuntu x86架构使用了ubuntu arm架构的软件源链接&#xff09;&#xff0c;或者不符合当前版本的链接&#xff08;ubuntu 22.04使用了ubuntu 24的链接…