详细介绍IDI_APPLICATION和IDC_ARROW

书籍:《windows程序设计(第五版)》

环境:visual studio 2022

内容:HELLOWIN程序

说明:以下内容大部分来自腾讯元宝。

IDI_APPLICATION 与 IDC_ARROW 详解

1. IDC_ARROW(光标资源标识符)​
  • 定义与用途
    IDC_ARROW 是 Windows 系统预定义的光标资源标识符,用于加载系统默认的箭头光标。在窗口类注册或控件创建时,通过 LoadCursor 函数加载该光标,例如:
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); // 加载箭头光标[3](@ref)
    • 功能:提供标准的光标样式,适用于大多数交互场景(如文本输入、按钮悬停等)。
    • 兼容性:自 Windows 95 起支持,跨版本通用。
2. IDI_APPLICATION(图标资源标识符)​
  • 定义与用途
    IDI_APPLICATION 是 Windows 系统预定义的图标资源标识符,用于加载系统默认的应用程序图标。在窗口类注册时,通过 LoadIcon 函数加载该图标,例如:
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // 加载应用程序图标[1](@ref)
    • 功能:提供标准的 16x16 或 32x32 像素图标,用于任务栏、标题栏等位置标识应用程序。
    • 扩展性:开发者可通过 IDI_APPLICATION 加载系统图标,或自定义图标资源(需配合 IDI_ICON1 等自定义 ID)。
3. 两者共性与差异
特性IDC_ARROWIDI_APPLICATION
资源类型光标(Cursor)图标(Icon)
加载函数LoadCursorLoadIcon
默认样式箭头形状16x16 或 32x32 像素应用程序图标
典型应用场景按钮悬停、文本选择等交互操作程序标题栏、任务栏、资源管理器显示
系统兼容性兼容所有 Windows 版本

3

兼容 Windows 95 及以上版本

1

4. 使用注意事项
  1. 资源管理

    • 系统预定义资源(如 IDC_ARROWIDI_APPLICATION)由系统自动管理,无需手动释放。
    • 自定义图标/光标需通过 CreateIcon 或资源编辑器生成,并显式释放内存。
  2. Unicode 兼容性

    • 在 Unicode 编译环境下,LoadCursor 和 LoadIcon 会自动处理资源标识符的字符类型。
  3. 替代方案

    • 若需自定义光标或图标,可使用 IDI_APPLICATION 或 IDC_ARROW 作为默认值,再通过 IDC_HAND(错误提示手型光标)、IDI_QUESTION(问号图标)等扩展标识符增强用户体验。
5. 示例代码
// 注册窗口类时加载系统默认图标和光标
WNDCLASS wndclass = {.hIcon = LoadIcon(NULL, IDI_APPLICATION), // 加载应用程序图标.hCursor = LoadCursor(NULL, IDC_ARROW)    // 加载箭头光标
};

总结

IDC_ARROW 和 IDI_APPLICATION 是 Windows 编程中标准化的资源标识符,分别用于加载光标和图标,简化了界面开发流程。开发者可通过组合使用这些标识符快速实现基础交互功能,同时结合自定义资源提升用户体验。对于更复杂的场景(如动态加载图标),需参考 Windows API 文档进一步扩展。

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

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

相关文章

Docker学习笔记(十)搭建Docker私有仓库

一、环境配置 1、宿主机系统:macOS Sequoia(版本15.2) 2、虚拟机VMware Fusion版本:专业版 13.6.2 (24409261) 3、虚拟机系统:AlmaLinux-9-latest-x86_64-boot.iso 二、安装Harbor开源企业级Docker镜像 Harbor 是一个开源的企业级 Docker…

Linux中基本命令

目录 ls pwd cd touch mkdir rm cp mv cat less head tail find grep ls 其实大部分命令都是可执行的文件,但有一些命令比如Shell内置命令,它没有对应的独立可执行文件,而是由Shell直接解释执行的。 功能:显示当前目…

IDEA导入jar包后提示无法解析jar包中的类,比如无法解析符号 ‘log4j‘

IDEA导入jar包后提示无法解析jar包中的类 问题描述解决方法 问题描述 IDEA导入jar包的Maven坐标后,使用jar中的类比如log4j,仍然提示比如无法解析符号 log4j。 解决方法 在添加了依赖和配置文件后,确保刷新你的IDE项目和任何缓存&#xff…

字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破

目录 禹棋赢的背景与成就 主要成就 DAPO算法的技术细节 算法优势 禹棋赢的研究历程 关键时间节点 字节跳动的“Top Seed人才计划” 计划特点 小编总结 在大模型时代,经验不再是唯一的衡量标准,好奇心、执行力和对新技术的敏锐洞察力成为推动技术…

Mysql表的简单操作

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 3.1 创建表 3.2 查看表结构 3.3 修改表 1. 添加字段 2. 修改字段 …

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现全局状态管理

前言 在现代应用程序开发中,状态管理是构建复杂且可维护应用的关键。随着应用程序规模的增长,组件之间共享和同步状态变得越来越具有挑战性。如果处理不当,状态管理可能会导致代码混乱、难以调试,并最终影响应用程序的性能和可扩…

大模型的微调技术(高效微调原理篇)

背景 公司有需求做农业方向的大模型应用以及Agent助手,那么适配农业数据就非常重要。但众所周知,大模型的全量微调对算力资源要求巨大,在现实的限制条件下基本“玩不起”,那么高效微调技术就非常必要。为了更好地对微调技术选型和…

Java 大视界 -- Java 大数据在智能家居设备联动与场景自动化中的应用(140)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

面试八股 —— Redis篇

重点:缓存 和 分布式锁 缓存(穿透,击穿,雪崩) 降级可作为系统的保底策略,适用于穿透,击穿,雪崩 1.缓存穿透 2.缓存击穿 3.缓存雪崩 缓存——双写一致性 1.强一致性业务&#xff08…

[网络安全] 滥用Azure内置Contributor角色横向移动至Azure VM

本文来源于团队的超辉老师,其系统分析了Azure RBAC角色模型及其在权限滥用场景下的攻击路径。通过利用AADInternals工具提升用户至Contributor角色,攻击者可在Azure VM中远程执行命令,创建后门账户,实现横向移动。文中详述了攻击步…

OO_Unit1

第一次作业 UML类图 代码复杂度分析 其中Expr中的toString方法认知复杂度比较高,主要源于多层条件嵌套和分散的字符串处理逻辑,重构时可重点关注这两部分的解耦。 代码量分析 1.”通用形式“ 我觉得我的设计的最大特点就是“通用形式”,具…

阿里云 AI 搜索产品荣获 Elastic Innovation Award 2024

阿里云AI搜索产品荣获Elastic Innovation Award 2024,该奖项于近日在新加坡ElasticON 2025的Elastic合作伙伴峰会上颁发,旨在表彰基于Elastic平台开发企业级生成式人工智能(GenAI)应用的顶尖合作伙伴,这些应用有效帮助…

网络原理之网络层、数据链路层

1. 网络层 1.1 IP协议 1.1.1 基本概念 主机: 配有IP地址,但是不进⾏路由控制的设备路由器: 即配有IP地址,⼜能进⾏路由控制节点: 主机和路由器的统称 1.1.2 协议头格式 说明: 4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4,对于IPv6来说,就是6 4位头…

炫酷的3D按钮效果实现 - CSS3高级特性应用

炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…

Java定时任务的三重境界:从单机心跳到分布式协调

《Java定时任务的三重境界:从单机心跳到分布式协调》 本文将以生产级代码标准,揭秘Java定时任务从基础API到分布式调度的6种实现范式,深入剖析ScheduledThreadPoolExecutor与Quartz Scheduler的线程模型差异,并给出各方案的性能压…

鸿蒙Flutter开发故事:不,你不需要鸿蒙化

在华为牵头下,Flutter 鸿蒙化如火如荼进行,当第一次看到一份上百个插件的Excel 列表时,我也感到震惊,排名前 100 的插件赫然在列,这无疑是一次大规模的军团作战。 然后,参战团队鱼龙混杂,难免有…

PolyBench基准程序详解:编译器优化评测指标

PolyBench基准程序详解:编译器优化评测指标 PolyBench基本概念 PolyBench(Polyhedral Benchmark)是由UCLA(加州大学洛杉矶分校)的Louis-Nol Pouchet及其研究团队开发的基准测试套件,专门用于评估多面体编…

2025年渗透测试面试题总结-某四字大厂实习面试复盘 一面 二面 三面(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一面 1. 数组和链表各自的优势和原因 2. 操作系统层面解析和进程 3. 线程和进程通信方式及数据安全问…

ruoyi-vue部署4

1.jdk-linux安装 2.tomcat-linux安装 3.ruoy后台部署 4.nginx-linux安装5.ruoyi前端部署​​​​​​​

查看visual studio的MSVC版本的方法

右键项目名称,下拉点击属性 然后点击库目录,下拉点击编辑 就可以看见msvc版本了