WIN32 资源

2023-11-11

首先解释一下句柄:

        win32中的句柄在数值上表示一个32位的数,用来标识应用程序/进程中不同对象以及同类对象中的不同实例,而所谓实例就是指被实例化的对象,实例化的过程就是通过类创建对象的过程。实例化对象的目地是为对象开辟内存空间。所以句柄是指向一片内存空间的。

        句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。这种间接访问对象的模式增强了系统对引用对象的控制。也就是说句柄是指向指针的指针。

        资源加载过程简单来说,rc资源通过编译成为二进制res资源,通过链接加载到程序中,程序运行过程中通过句柄以及资源ID找到资源的内存空间,进而将资源加载展示。

1、菜单资源

1、添加资源文件

2、加载资源文件(三种方式)

        1、注册窗口类时加载菜单资源

        2、创建窗口时传参(菜单资源句柄)设置

        3、在主窗口产生WM_CREATE消息后,通过SetMenu函数设置

获取menu句柄函数:

HMENU LoadMenuA(
  [in, optional] HINSTANCE hInstance,
  [in]           LPCSTR    lpMenuName
);

2、图标资源

1、添加资源

2、加载资源

        注册窗口类时加载图标资源

获取图标句柄函数:

HICON LoadIconA(
  [in, optional] HINSTANCE hInstance,
  [in]           LPCSTR    lpIconName
);

3、光标资源

1、添加资源

2、加载资源

        1、注册窗口类时加载光标资源  (仅对客户区生效)

        2、通过SetCursor函数设置 (对客户区、标题栏区域均生效)

获取光标句柄函数:

HCURSOR LoadCursorA(
  [in, optional] HINSTANCE hInstance,
  [in]           LPCSTR    lpCursorName
);

SetCursor设置时机:

鼠标移动会产生WM_SETCURSOR消息:

        WPARAM   当前使用光标句柄

        LPARAM  

                LOWDRD   当前区域 (HTCLIENT / HTCAPTION)

                HIWORD    当前鼠标消息ID(左/右 up/down)

4、字符串资源

int LoadStringA(
  [in, optional] HINSTANCE hInstance,
  [in]           UINT      uID,
  [out]          LPSTR     lpBuffer,
  [in]           int       cchBufferMax
);

5、加速键资源

1、添加加速表资源,增加命令ID对应的加速键

2、使用

        1、加载加速键表

HACCEL LoadAccelerators(
    HINSTANCE hlnstance,  //模块的一个实例的句柄
    LPCTSTR lpTableName //指向即将调入的加速键表的名字字符串。
);   //返回 加速键表 句柄

        2、翻译加速键表       

int
WINAPI
TranslateAcceleratorW(
    _In_ HWND hWnd,//处理消息的窗口句柄
    _In_ HACCEL hAccTable,//快捷键表句柄。快捷键表由前面LoadAccelerators函数调用装入
    _In_ LPMSG lpMsg//消息结构指针
); //如果时加速键,返回非0

在WM_COMMAND中相应的消息参数:

WPARAM :HIWORD == 1 为加速键消息  0表示菜单消息

                     LOWARD 为命令ID

LPARAM : 为0  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WIN32 资源 的相关文章

  • 【C#】VS2019 未能在命名空间“Microsoft.Win32”中找到类型名“RegistryKey” 的解决办法

    文章目录 前言解决方案 结语 前言 今天在写 C 实验的时候遇到了 未能在命名空间 Microsoft Win32 中找到类型名 RegistryKey 此类型已转发到程序集 Microsoft Win32 Registry Version
  • VS中空项目、win32项目、控制台程序的区别

    一 区别 xff08 1 xff09 Win32控制台程序 xff0c 没有界面 xff0c 只有命令符 生成的 exe 文件直接运行操作即可 xff08 2 xff09 Win32项目 xff0c 有界面 但是界面里面的控件 xff0c
  • vs 开发 win32 程序,调出控制台窗口,方便调试

    设置方法 项目 gt 属性 gt 生成事件 gt 后期生成事件 gt 命令行 中添加 editbin span class hljs constant SUBSYSTEM span class hljs symbol CONSOLE spa
  • Win32窗口

    Win32窗口 span class token comment windows 开发所需头文件 包含Windows开发所需要的宏 类 函数 结构体等结构的定义 span span class token macro property sp
  • win32 汇编基础概念整理

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 xff0c 似乎IP也是寄存器 xff0c 但只有在CALL RET在中会默认使用它 xff0c 其它情况很少使用到 xff0c 暂时可以不用理会 E
  • 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    跳转指令分三类 一 无条件跳转 JMP 二 根据 CX ECX 寄存器的值跳转 JCXZ CX 为 0 则跳转 JECXZ ECX 为 0 则跳转 三 根据 EFLAGS 寄存器的标志位跳转 这个太多了 根据标志位跳转的指令 JE 等于则跳
  • Windows下的Win32串口编程

    在工业控制中 xff0c 工控机 xff08 一般都基于Windows平台 xff09 经常需要与智能仪表通过串口进行通信 串口通信方便易行 xff0c 应用广泛 一般情况下 xff0c 工控机和各智能仪表通过RS485总线进行通信 RS4
  • VS2015项目属性配置中的变量设置

    关于VS的项目属性配置 很长时间都没有去细究关于各种定义的意义 比如说 outDir这样的东西以前没有细细追究过原因 这次都一并做个记录 1 常规页签 是对各个变量的解释输出目录 OutDir 中间目录 IntDir 目标文件名 Targe
  • Win32环境下两种用于C++的线程同步类

    线程同步是多线程程序设计的核心内容 它的目的是正确处理多线程并发时的各种问题 例如线程的等待 多个线程访问同一数据时的互斥 防死锁等 Win32提供多种内核对象和手段用于线程同步 如互斥量 信号量 事件 临界区等 所不同的是 互斥量 信号量
  • 转:windows消息传递机制

    Windows是一个消息 Message 驱动系统 Windows的消息提供了应用程序之间 应用程序与Windows系统之间进行通信的手段 应用程序想要实现的功能由消息来触发 并且靠对消息的响应和处理来完成 必须注意的是 消息并非是抢占性的
  • Win32 Application 、Win32 Console Application、MFC工程项目

    Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序 Win32 Application 是标准 windows程序 完全拥有windows的特性 也即我们常说的窗
  • 让Win32窗口程序拥有控制台窗口

    让Win32窗口程序拥有控制台窗口 首先 为什么我们有了普通窗口后还要控制台窗口呢 因为我们可以用它方便的输出调试信息 而且普通玩家看到了也会觉得很高端 如果他会输几条命令 可能他会以为自己就是黑客了 示例效果 WinMain作为入口函数后
  • C++ win32编程 02 常见消息

    02 常见消息 1 打印消息相关信息 1 1 将消息内容转化为字符串 第一步 定义字符串变量 用来保存转化后的消息 wchar t szInfo 300 定义消息内容变量 第二步 用宽字符格式化函数转化消息内容 wsprintf szInf
  • 【mfc】学生信息管理,实现List控件节点的增删改查

    之前在mfc这个专栏里面 写了很多关于win32的程序 其实也没什么的 win32是mfc的基础 mfc只是win32的扩展 系统自带的扩展 新建一个mfc如同新建一个win32程序 不过这个win32程序一开始就带了很多空函数框架 一 基
  • 几何画笔

    在看书时看到了这个概念 画笔可以分为几何画笔和装饰画笔 目前从CSDN以及MSDN上大致看了一下几何画笔的用法 代码如下 HPEN hPen NULL DWORD dwStyle PS GEOMETRIC PS DASHDOT PS END
  • 让CPU画出图形(其实很简单的)

    本例子是当初微软的一个题目 希望windows任务管理器的CPU的占有率 是一个正旋曲线 如果是你 你会如何解决这个问题呢 先上图吧 由于cpu要处理其他电脑程序 只能画出来大概的模样 其实我当时想这个问题时候 是不是考虑对cpu进行操作
  • Win32API学习笔记第三章

    这次记录的是鼠标与键盘的消息和部分相应API的使用如与标准 本人学的是Win程序设计第五版 有偏差 或哪里有不妥 欢迎大家给予斧正 一 键盘 初阶 Windows有8种不同的消息来传递不同的键盘事件 但是其中的大部分是我们一般不会去处理的
  • 有关cocos2d创建c++项目,并把win32项目打包成apk文件

    首先进入cocos2d资源包文件夹例如 cd D Cocos Cocos2d x cocos2d x 3 10 再输入cocos new try项目名 p org cocos2dx 包名 l cpp d codes 创建cocos2d 3
  • windows 消息机制

    windows 操作系统是由事件驱动的 也叫消息机制 一般来说分为四步 用户动作也就是事件 gt windows 将事件翻译成消息 gt 将消息放入消息队列 gt 消息循环从消息队列中取出消息并发送给窗口处理程序 我们来看一下窗口最简单窗口
  • ShellExecuteEx中与被调进程同步

    在实际的开发中会遇到这样的情况 A进程在运行时 需要调起B进程完成某些工作 例如取回关键文件 且必须等待该进程完成工作结束后才能往下继续 那么这时候 就可以采用ShellExecuteEx和WaitForSingleObject的结合对被调

随机推荐

  • 记第一次学习搭建web渗透靶场(vulhub)

    一个非常适合小白使用的靶场 valhub官网 https vulhub org github地址 https github com vulhub vulhub 二 只需要在Linux环境下安装即可 最好是Ubuntu 官网推荐的是克隆模式
  • 巡检服务

    巡检管理服务是指服务商对客户的IT应用系统 业务系统及相关设备进行周期性 主动性的健康检查服务 旨在及时发现已有或潜在问题 提出改进建议和措施 防止故障的发生 围绕巡检服务管理的目标进行巡检服务规划 组建巡检服务团队 监理巡检服务管理制度及
  • 如何查看Jetson TX1/2 CPU和GPU性能使用状态

    如何查看Jetson TX1 2 CPU和GPU性能使用状态 官方给了一个脚本文件 我们使用超级权限运行即可 sudo tegrastats 效果如下 RAM 4634 7854MB lfb 2x512kB cpu 0 1112 off o
  • Java 集合之Collection

    首先我们看下Collection的结构图 从结构图上我们可以看到Collection集合下面有3个比较大的实现 Set List Queue在日常开放过程中我们比较常用的是Set与List 针对Queue我在之前的博客中也有所介绍 在这里不
  • 登录界面设计测试---适合背诵

    主要从功能 易用性 性能 安全 兼容 一 功能测试 1 7 case 主要体现 用户名和密码 账号问题 8 12 case 主要体现 验证 图片或短信 13 20 case 主要体现 特别场景 1 输入已注册的用户名和正确的密码 验证是否成
  • Window的Java环境安装

    一 Window的Java环境安装 1 下载百度网盘的Java环境jdk 8u131 windows x64 exe 2 点击jdk 8u131 windows x64 exe 下一步 3 更改Java你想安装位置 点击下一步 4 Java
  • MATLAB反三角函数arcsecx, arccscx, arctanx, arccotx, arcsinx, arccosx绘图表示

    matlab源代码 依次为 arcsecx arccscx arctanx arccotx arcsinx arccosx figure 1 x 0 0 01 pi y sec x plot y x title arcsecx set gc
  • (一)调试RocketMq源码

    文章目录 一 启动NameServer 1 1namesrv模块找到NamesrvStartup java 1 2修改配置文件目录 1 3启动NamesrvStartup java 二 配置Broker 2 1配置BrokerStartup
  • Ubuntu Linux中hostname`命令

    当然 让我们将关于在Ubuntu Linux中理解hostname的知识转化为列表形式 参考 https www howtouseubuntu com network change hostname in ubuntu linux 定义 h
  • 第四章 Linux实用操作

    1 软件安装 1 1 CentOS 1 2 Ubuntu 2 systemctl控制软件启动关闭 mp4 3 软链接 4 日期和时区 4 1 date命令 4 2 ntp程序 4 3 小结 5 IP地址和主机名 6 配置Linux固定IP地
  • 【干货】PCB线宽与电流关系

    以下总结了八种电流与线宽的关系公式 表和计算公式 虽然各不相同 大体相近 但大家可以在实际的PCB板设计中 综合考虑PCB板的大小 通过电流 选择一个合适的线宽 PCB电流与线宽 PCB载流能力的计算一直缺乏权威的技术方法 公式 经验丰富C
  • MoCo v1 论文笔记

    Momentum Contrast for Unsupervised Visual Representation Learning 论文笔记 DETR 论文笔记 Momentum Contrast for Unsupervised Visu
  • 三因素方差分析_【科研加油站】SPSS操作之三因素方差分析

    点击上方蓝字 轻松关注我们 以下内容转载自 医咖会 微信公众号 medieco ykh 作者Jane 上一期我们讨论了双因素方差分析 本期 科研加油站 栏目 我们一起来探讨三因素方差分析 问题与数据 某研究者想研究某类新药降低胆固醇水平的效
  • CData API Server全面且文档完整的API

    CData API Server全面且文档完整的API 使用现有业务信息创建API 连接到任何SQL以及NoSQL数据库以及API服务器 都会立即生成灵活 全面且文档完整的API 发现数据集成的潜力 API服务器API服务器提供了在企业AP
  • register的用法c语言,C语言中auto,static,register,extern存储类型的用法

    在C语言中提供的存储类型说明符有auto extern static register 说明的四种存储类别 四种存储类别说明符有两种存储期 自动存储期和静态存储期 其中auto和register对应自动存储期 具有自动存储期的变量在进入声明
  • Unity脚本API—Transform 变换

    场景中的每一个对象都有一个Transform 用于储存并操控物体的位置 旋转和缩放 每一个Transform可以有一个父级 允许你分层次应用位置 旋转和缩放 可以在Hierarchy面板查看层次关系 他们也支持计数器 enumerator
  • AGV调度系统/两阶段算法模拟源代码 地图建模

    多 AGV调度系统 两阶段算法模拟源代码 地图建模c openTCS1 AGV调度系统源码 OpenTCS OpenTCS是一个开源的AGV调度系统程序 能给初入AGV行业的人士一些帮助 该实例是包含源码的程序 可成功运行 2 openTC
  • UE4 蓝图数组反转节点ReverseforEachLoop的坑

    由于蓝图没有直接反转数组的节点类似于C 的reverse 所以只好用ReverseforEachLoop这个节点 但是这个节点有个坑 就是ArrayIndex是从数组末尾元素下标开始输出 并非是从0开始 因此如果要用到ArrayIndex得
  • 记录一次JVM发生OOM问题的解决,包括jvisualvm工具的使用,以及对GC的理解等

    目录 OOM原因分析 解决 利用hprof文件分析的步骤 结合jvisualvm工具 jvisualvm实时监控本地jvm jvisualvm实时监控远程jvm 对于JVM的GC理解 Minor GC Full GC 常用JVM参数配置 查
  • WIN32 资源

    首先解释一下句柄 win32中的句柄在数值上表示一个32位的数 用来标识应用程序 进程中不同对象以及同类对象中的不同实例 而所谓实例就是指被实例化的对象 实例化的过程就是通过类创建对象的过程 实例化对象的目地是为对象开辟内存空间 所以句柄是