ID命名和数字约定

MFC ID 命名和数字约定需要满足以下要求:

  • 提供对 Visual C++ 资源编辑器支持的 MFC 库和 MFC 应用程序中使用的一致的 ID 命名标准。 这样就可以轻松地对程序员介绍了一种资源的类型和原点距其 ID 的.

  • 基础 ID 之间的某些类型的密切的一对一关系。

  • 符合已命名的 ID 的常用标准在窗口中。

  • 分区 ID 号空间。 ID 号可由程序员、 MFC、窗口和 visual C++ 编辑的资源分配。 相应分区将有助于避免 ID 号的副本。

    • ID 的几种类型的应用程序会发生此错误。 MFC ID 命名约定定义不同的资源类型的不同的前缀。

      使用 MFC 应用于多个资源类型的标题 “IDR_”表示资源 ID。 例如,对于特定框架窗口,则 MFC 使用同一 “IDR_”前缀指示菜单、快捷键、字符串和图标资源。 下表显示各标题和它们的用法:

      前缀

      使用

      IDR_

      对多个资源类型 (主要用于菜单、快捷键和功能区)。

      IDD_

      到对话框模板资源 (例如, IDD_DIALOG1)。

      IDC_

      为光标资源。

      IDI_

      为图标资源。

      IDB_

      向位图资源。

      IDS_

      为字符串资源。

      在对话框资源中, MFC 遵循以下约定:

      标题或标签

      使用

      IDOK, IDCANCEL

      对于标准普通按钮 ID。

      IDC_

      对于其他对话框控件。

      “IDC_”前缀对游标还使用。 ,因为典型的应用程序将有少量光标和许多对话框控件,此命名冲突通常不是问题。

       在菜单资源中, MFC 遵循以下约定:

      前缀

      使用

      IDM_

      对于不使用 MFC 命令体系结构的菜单项。

      ID_

      对于使用 MFC 命令体系结构的菜单命令。

      遵循 MFC 命令体系结构的命令必须具有 ON_COMMAND 命令处理程序,并且可能导致 ON_UPDATE_COMMAND_UI 处理程序。 如果这些命令处理程序遵循 MFC 命令体系结构,它们将正常工作是否绑定到菜单命令、工具栏按钮或对话栏按钮。 同一 “ID_”前缀用于在程序的消息栏显示菜单提示字符串还使用。 大多数在应用程序中的菜单项应遵循 MFC 命令约定。 所有标准命令 ID (例如, ID_FILE_NEW) 遵循此约定。

      MFC 还使用 “IDP_”,字符串的专用形式 (而不是 “IDS_”)。 与 “IDP_”前缀的字符串是提示,也就是说,用于消息框的字符串。" IDP_”字符串可以包含 “%1 " 和 “%2 " 作为程序依赖的字符串占位符。" IDP_”字符串通常具有帮助主题与它们关联,因此, “IDS_”字符串不。" IDP_”字符串始终本地化,, “IDS_”字符串可能不本地化。

      MFC 库还使用 “IDW_”前缀,控件 ID 的专用形式 (而不是 “IDC_”)。 这些 ID 分配给子窗口 (如视图和拆分由 framework 类。 MFC 实现 ID (以 “AFX_”。

       
         下表列出了特定类型的 ID 的有效范围。 某些限制是技术实现限制,同时,其他是旨在防止您的 ID 冲突与 windows 预定义的 ID 或 MFC 默认实现的约定。

      强烈建议您定义了建议的范围内的所有 ID。 ,因为没有使用,这些范围下限为 1 0。 建议您使用公共约定并使用 100 或 101 作为第一个 ID.

      前缀

      资源类型

      有效范围

      IDR_

      多个

      1 到 0x6FFF

      IDD_

      对话框模板

      1 到 0x6FFF

      IDC_, IDI_, IDB_

      光标,图标,位图

      1 到 0x6FFF

      IDS_, IDP_

      一般字符串

      1 到 0x7FFF

      ID_

      命令

      0x8000 到 0xDFFF

      IDC_

      控件

      8 到 0xDFFF

      这些原因的范围限制:

      • 按照约定,不使用 ID 值为 0。

      • 窗口实现限制限制为 true 的资源 ID 小于或等于 0x7FFF。

      • MFC 的内部结构实现保留两个范围:0x7000 通过 0x7FFF 和 0xE000 通过 0xEFFF。

      • 有些 windows 系统命令通过 0xFFFF 使用 0xF000 的大小。

      • 控件 ID 1 到 7 为标准控件是保留的例如 IDOK 和 IDCANCEL。

      • 0x8000 的范围传递字符串的 0xFFFF 为菜单提示是保留的输入命令。

      参考原文:http://technet.microsoft.com/zh-cn/library/t2zechd4(v=vs.110).aspx

【MFC】ID命名和数字约定的更多相关文章

  1. MFC:ID命名和数字约定

    今天早上双击一个刚刚编译完成的应用程序,界面刚刚显示,又自动触发了一个菜单事件,打开了一个网页.真的很意外.关闭窗口,再次双击,又自动打开了一个网页,再关闭,再双击,又不自动打开网页了.这是什么情况? ...

  2. 【CSS】class和id命名规则

    说明,本篇内容为书籍<高流量网站CSS开发技术>的学习总结,文字出自书本 书不错,推荐阅读学习 也可参阅网上的博文 原载:彬Go链接:http://blog.bingo929.com/cs ...

  3. 关于Html class id 命名规范

    CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...

  4. 【COGS & USACO Training】710. 命名那个数字(hash+水题+dfs)

    http://cojs.tk/cogs/problem/problem.php?pid=710 近日开始刷水... 此题我为了练一下hash...但是hash跑得比暴力还慢.. 不言而喻... #in ...

  5. Name That Number 命名那个数字

    1.2.3 Name That Number 命名那个数字 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 183  Solved: 33[Submit][ ...

  6. 小程序开发之scroll-view中id不能以数字开头的问题

    在实现这样的一个功能时,   调用微信小程序api发现scroll中可以通过id来实现点击菜单栏,屏幕滚动到对应的id位置 但是id不能以数字,汉字类型的 字符串开头(暂发现两种),可能博主比较笨,想 ...

  7. (转)MySQL数据库命名规范及约定

    一.[操作规范]1. 如无备注,则表中的第一个id字段一定是主键且为自动增长:2. 如无备注,则数值类型的字段请使用UNSIGNED属性:3. 如无备注,排序字段order_id在程序中默认使用降序排 ...

  8. MySQL数据库命名规范及约定

    一.[操作规范]1. 如无备注,则表中的第一个id字段一定是主键且为自动增长:2. 如无备注,则数值类型的字段请使用UNSIGNED属性:3. 如无备注,排序字段order_id在程序中默认使用降序排 ...

  9. HTML5中id可以用数字开头,但在css中不能正常使用

    昨晚在看<响应式Web设计:html5和css3实战>时,书中提到“HTML5中的ID指可以用数字开头”.这个还真不知道,于是测试了一下,发现了问题. 在H5描述中是这样说的: 在css样 ...

随机推荐

  1. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q70-Q72)

    Question 70You plan to create one provider Web Part and two consumer Web Parts.You need to ensure th ...

  2. C安全编码--数组

    建议和规则 建议: 理解数组的工作方式 获取数组的长度时不要对指针应用sizeof操作符 显示地指定数组的边界,即使它已经由初始化值列表隐式地指定 规则: 保证数组索引位于合法的范围内 在所有源文件中 ...

  3. Android性能优化--Listview优化

    ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...

  4. 记OC迁移至swift中笔记20tips

    写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节. 1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是 ...

  5. new与malloc的区别

    看起来,它们的不同只是new比malloc用起来更方便而已.仅仅是这样吗?不是吗? 1 来源不同: 1)new/delete是C++中的操作符,而malloc/free是C中的标准库函数,需要库文件支 ...

  6. 多线程--毕向东java基础教程视频学习笔记

    目录 1.多线程运行的安全问题 2.多线程同步代码块 3.同步方法的锁是this 4.静态同步方法的锁是Class对象 5.单例设计模式(面试中的考点) 6.死锁(一个发生死锁的例子) 多线程运行的安 ...

  7. 【JavaScript】JQuery中$.fn、$.extend、$.fn.extend

    Web开发肯定要使用第三方插件,对于一个炫丽的效果都忍不住想看看对方是如何实现的,刚下载了一个仿京东商品鼠标经过时局部放大的插件.看了两眼JQuery源码,看看就感觉一头雾水.JQuery本来自己学的 ...

  8. JSP过滤器Filter配置过滤类型汇总

    一.配置方法1 映射过滤应用程序中所有资源<filter>    <filter-name>loggerfilter</filter-name>    <fi ...

  9. 从mysql数据表中随机取出一条记录

    核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...

  10. 迅为iTOP-4412核心板调整电压

    本文转自:http://www.topeetboard.com iTOP-4412核心板使用的电源管理芯片是三星专门针对4412研发的S5M8767,8767提供9路BUCK和28路LDO输出,每路电 ...