【MFC】ID命名和数字约定

ID命名和数字约定

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

  • 提供对 Visual C++ 资源编辑器支持的 MFC 库和 MFC 应用程序中使用的一致的 ID 命名标准。 这样就可以轻松地对程序员介绍了一种资源的类型和原点距其 ID 的.
  • 基础 ID 之间的某些类型的密切的一对一关系。
  • 符合已命名的 ID 的常用标准在窗口中。
  • 分区 ID 号空间。 ID 号可由程序员、 MFC、窗口和 visual C++ 编辑的资源分配。 相应分区将有助于避免 ID 号的副本。
    • 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 的有效范围。 某些限制是技术实现限制,同时,其他是旨在防止您的 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

时间: 2024-08-01 10:44:04

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

MFC:ID命名和数字约定

今天早上双击一个刚刚编译完成的应用程序,界面刚刚显示,又自动触发了一个菜单事件,打开了一个网页.真的很意外.关闭窗口,再次双击,又自动打开了一个网页,再关闭,再双击,又不自动打开网页了.这是什么情况? 到百度搜索“mfc 菜单 id 范围”,找到一篇来自CSDN的帖子: http://topic.csdn.net/t/20030708/14/2003847.html 看到最后一位回复者(sxslyy)的内容: 见MFC   windows   程序设计   第199页   ID要为16的倍数,因

关于Html class id 命名规范

CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right center 登录条:loginbar 标志:logo 广告:banner 页面主体:main 热点:hot 新闻:news 下载:download 子导航:subnav 菜单:menu 子菜单:submenu 搜索:search 友情链接:friendlink 页脚:foote

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

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

MySQL数据库命名规范及约定

一.[操作规范]1. 如无备注,则表中的第一个id字段一定是主键且为自动增长:2. 如无备注,则数值类型的字段请使用UNSIGNED属性:3. 如无备注,排序字段order_id在程序中默认使用降序排列:4. 如无备注,所有字段都设置NOT NULL,并设置默认值:5. 如无备注,所有的布尔值字段,如is_hot.is_deleted,都必须设置一个默认值,并设为0:6. 所有的数字类型字段,都必须设置一个默认值,并设为0:7. 针对varchar类型字段的程序处理,请验证用户输入,不要超出其预

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

一.[操作规范]1. 如无备注,则表中的第一个id字段一定是主键且为自动增长:2. 如无备注,则数值类型的字段请使用UNSIGNED属性:3. 如无备注,排序字段order_id在程序中默认使用降序排列:4. 如无备注,所有字段都设置NOT NULL,并设置默认值:5. 如无备注,所有的布尔值字段,如is_hot.is_deleted,都必须设置一个默认值,并设为0:6. 所有的数字类型字段,都必须设置一个默认值,并设为0:7. 针对varchar类型字段的程序处理,请验证用户输入,不要超出其预

MySQL_数据库命名规范及约定

操作规范 如无说明,建表时一律采用innodb引擎: 如无说明,数据库表编码集(utf8,utf8_bin)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 如无备注,则表中的第一个id字段一定是主键且为自动增长: 如无备注,则数值类型的字段请使用UNSIGNED属性: 如无备注,排序字段order_id在程序中默认使用降序排列: 如无备注,所有字段都设置NOT NULL,并设置默认值: 如无备注,所有的布尔值字段,如is_hot.is_de

HTML中的ID不能以数字开头

最近在学习网页制作,发现ID在w3c规范里是不能以一个数字开头的,chrome浏览器是可以,firefox就不能使用数字开头了,其它浏览器未测试. 记录一下! W3C规范链接:http://www.w3.org/TR/html-markup/global-attributes.html#common.attrs.id

元素ID命名规范

因为本框架默认所有内容都位于一个Document中,所以为元素命名为ID的时候需要做到唯一性,如果确实不可避免的会出现有重读ID的现象,需要操作当前页片(页面片段,就是子页面)的时候,尽量用: $.CurrentNavtab.find("#dom-id"),在当前标签工作区中查找指定ID的元素 或 $.CurrentDialog.find("#dom-id"),在当前弹窗中查找指定ID的元素

C# 命名的基本约定【转】

要使用可以准确说明变量/字段/类的完整的英文描述符,如firstName.对一些作用显而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以被命名为 " i ". 要尽量采用项目所涉及领域的术语. 要采用大小写混合,提高名字的可读性.为区分一个标识符中的多个单词,把标识符中的每个单词的首字母大写.不采用下划线作分隔字符的写法.有两种适合的书写方法,适应于不同类型的标识符: PasalCasing:标识符的第一个单词的字母大写: camelCasing:标识符的第一个单词的字母