匈牙利命名法——命名规范(知道这些再看Windows程序就轻松多了)
匈牙利命名法
著名的命名规则当推Microsoft公司的"匈牙利"法,该命名规则的主要思想是"在变量和函数名中加入前缀以增进人们对程序的理解"。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。
MFC、句柄、控件及结构的命名规范
| Windows类型 | 样本变量 | MFC类 | 样本变量 |
| HWND | hWnd; | CWnd* | pWnd; |
| HDLG | hDlg; | CDialog* | pDlg; |
| HDC | hDC; | CDC* | pDC; |
| HGDIOBJ | hGdiObj; | CGdiObject* | pGdiObj; |
| HPEN | hPen; | CPen* | pPen; |
| HBRUSH | hBrush; | CBrush* | pBrush; |
| HFONT | hFont; | CFont* | pFont; |
| HBITMAP | hBitmap; | CBitmap* | pBitmap; |
| HPALETTE | hPaltte; | CPalette* | pPalette; |
| HRGN | hRgn; | CRgn* | pRgn; |
| HMENU | hMenu; | CMenu* | pMenu; |
| HWND | hCtl; | CState* | pState; |
| HWND | hCtl; | CButton* | pButton; |
| HWND | hCtl; | CEdit* | pEdit; |
| HWND | hCtl; | CListBox* | pListBox; |
| HWND | hCtl; | CComboBox* | pComboBox; |
| HWND | hCtl; | CScrollBar* | pScrollBar; |
| HSZ | hszStr; | CString | pStr; |
| POINT | pt; | CPoint | pt; |
| SIZE | size; | CSize | size; |
| RECT | rect; | CRect | rect; |
一般前缀命名规范
| 前缀 | 类型 | 实例 |
| C | 类或结构 | CDocument,CPrintInfo |
| m_ | 成员变量 | m_pDoc,m_nCustomers |
变量命名规范
| 前缀 | 类型 | 描述 | 实例 |
| ch | char | 8位字符 | chGrade |
| ch | TCHAR | 如果_UNICODE定义,则为16位字符 | chName |
| b | BOOL | 布尔值 | bEnable |
| n | int | 整型(其大小依赖于操作系统) | nLength |
| n | UINT | 无符号值(其大小依赖于操作系统) | nHeight |
| w | WORD | 16位无符号值 | wPos |
| l | LONG | 32位有符号整型 | lOffset |
| dw | DWORD | 32位无符号整型 | dwRange |
| p | * | 指针 | pDoc |
| lp | FAR* | 远指针 | lpszName |
| lpsz | LPSTR | 32位字符串指针 | lpszName |
| lpsz | LPCSTR | 32位常量字符串指针 | lpszName |
| lpsz | LPCTSTR | 如果_UNICODE定义,则为32位常量字符串指针 | lpszName |
| h | handle | Windows对象句柄 | hWnd |
| lpfn | callback | 指向CALLBACK函数的远指针 |
? |
应用程序符号命名规范
| 前缀 | 符号类型 | 实例 | 范围 |
| IDR_ | 不同类型的多个资源共享标识 | IDR_MAIINFRAME | 1~0x6FFF |
| IDD_ | 对话框资源 | IDD_SPELL_CHECK | 1~0x6FFF |
| HIDD_ | 对话框资源的Help上下文 | HIDD_SPELL_CHECK | 0x20001~0x26FF |
| IDB_ | 位图资源 | IDB_COMPANY_LOGO | 1~0x6FFF |
| IDC_ | 光标资源 | IDC_PENCIL | 1~0x6FFF |
| IDI_ | 图标资源 | IDI_NOTEPAD | 1~0x6FFF |
| ID_ | 来自菜单项或工具栏的命令 | ID_TOOLS_SPELLING | 0x8000~0xDFFF |
| HID_ | 命令Help上下文 | HID_TOOLS_SPELLING | 0x18000~0x1DFFF |
| IDP_ | 消息框提示 | IDP_INVALID_PARTNO | 8~0xDEEF |
| HIDP_ | 消息框Help上下文 | HIDP_INVALID_PARTNO | 0x30008~0x3DEFF |
| IDS_ | 串资源 | IDS_COPYRIGHT | 1~0x7EEF |
| IDC_ | 对话框内的控件 | IDC_RECALC | 8~0xDEEF |
Microsoft MFC宏命名规范
| 名称 | 类型 |
| _AFXDLL | 唯一的动态连接库(Dynamic Link Library,DLL)版本 |
| _ALPHA | 仅编译DEC Alpha处理器 |
| _DEBUG | 包括诊断的调试版本 |
| _MBCS | 编译多字节字符集 |
| _UNICODE | 在一个应用程序中打开Unicode |
| AFXAPI | MFC提供的函数 |
| CALLBACK | 通过指针回调的函数 |
库标识符命名法
| 标识符 | 值和含义 |
| u | ANSI(N)或Unicode(U) |
| d | 调试或发行:D = 调试;忽略标识符为发行。 |
静态库版本命名规范
| 库 | 描述 |
| NAFXCWD.LIB | 调试版本:MFC静态连接库 |
| NAFXCW.LIB | 发行版本:MFC静态连接库 |
| UAFXCWD.LIB | 调试版本:具有Unicode支持的MFC静态连接库 |
| UAFXCW.LIB | 发行版本:具有Unicode支持的MFC静态连接库 |
| 名称 | 类型 |
| _AFXDLL | 唯一的动态连接库(DLL)版本 |
| WINAPI | Windows所提供的函数 |
Windows.h中新的命名规范
| 类型 | 定义描述 |
| WINAPI | 使用在API声明中的FAR PASCAL位置,如果正在编写一个具有导出API人口点的DLL,则可以在自己的API中使用该类型 |
| CALLBACK | 使用在应用程序回叫例程,如窗口和对话框过程中的FAR PASCAL的位置 |
| LPCSTR | 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR*) |
| UINT | 可移植的无符号整型类型,其大小由主机环境决定(对于Windows NT和Windows 9x为32位);它是unsigned int的同义词 |
| LRESULT | 窗口程序返回值的类型 |
| LPARAM | 声明lParam所使用的类型,lParam是窗口程序的第四个参数 |
| WPARAM | 声明wParam所使用的类型,wParam是窗口程序的第三个参数 |
| LPVOID | 一般指针类型,与(void *)相同,可以用来代替LPSTR |
匈牙利命名法——命名规范(知道这些再看Windows程序就轻松多了)的更多相关文章
- 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法 C#命名规范
匈牙利命名法.骆驼命名法.帕斯卡(pascal)命名法 C#命名规范 一.匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中. Windows 编程中用到的变量(还包括宏)的命名 ...
- C#帕斯卡命名法
帕斯卡命名法 命名规则. 单字之间不以空格断开或 连接号 (-).底线(_)连结,第一个单词首字母采用 大写字母 :后续单词的首字母亦用大写字母,例如:FirstName.LastName.. 每一个 ...
- 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法
(2008-05-24 13:37:55) 转载▼ 标签: 杂谈 分类: 编程杂文 一.匈牙利命名法: 广泛应用于象Microsoft Windows这样的环境中. Windows 编 ...
- 匈牙利命名法,骆驼命名法(camel),帕斯卡(Pascal)命名法(转)
一.匈牙利命名法 Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) ...
- C++匈牙利命名法
匈牙利命名法 匈牙利命名法是一种编程时的命名规范.基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分.命名要基于容易记忆容易理解的原则.保证 ...
- 命名法:骆驼(Camel)、帕斯卡(pascal)、匈牙利(Hungarian)、下划线(_)
首先欢迎大家到来! 常用的命名法:骆驼(Camel).帕斯卡(pascal).匈牙利(Hungarian).下划线(_) 骆驼:是指混合使用大小写字母来构成变量和函数的名字 帕斯卡:与骆驼命名法类似只 ...
- JavaScript变量命名规则:匈牙利命名法
匈牙利命名法语法 变量名=类型+对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 提示 虽然JavaScript变量表面上没有类型,但是Jav ...
- c++ 请抛弃匈牙利命名法 - 变量命名代码风格的建议。
我只针对c++码农们讲,其他语言不了解不过应该大同小异.曾几何时翻开21天学通c++系列等脑残入门书,都以匈牙利命名法示人(DWORD dwXXX, int nXXX, string strXXX). ...
- 匈牙利命名法、Camel命名法与Pascal命名法
Camel命名法:即骆驼式命名法,首字母小写,采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏.Camel命名法有两种形式: 1.混合使用大小写字母,例如runFast 2.单词之间加下划线,例如r ...
随机推荐
- C#父类子类对象关系
案例: 主要有Vehicle.cs Airplane.cs Car.cs 3个类. Car和Airplane都继承与Vehicle类.Vehicle中Drive为虚方法,可在子类中重写,父类引 ...
- HDOj 1010 DFS优化
#include<cstdio> #include<cstring> ]={,,,-}; ]={,,-,}; ][]; int x1,y1,x2,y2; int step; i ...
- php接口和多态的概念以及简单应用
接口是面向对象中的一个重要特性,也是面向对象开发不可缺少的一个概念,下面简单说一下接口的概念,先看一段简单的代码: interface ICanEat { public function eat($f ...
- eclipse4.4 tomcat jrebel使用
1.下载jrebel破解包 2.去eclipse -->Help -->EclipseMarketplace 下载eclipse jrebel 也可以下载离线安装包,然后eclipse - ...
- 神经网络(luogu 1038 答案错误,出题人语体教)
题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...
- Windows环境下配置Vim为Python的IDE
(一)安装Python 2.7 在官网下载Python,并安装,我的安装路径是D:\Program Files\Python.安装完成后编辑环境变量Path,在其后添加;D:\Program File ...
- 菜鸟学Linux命令:tail命令 查看日志
tail 命令用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理. tail命令常用来查看日志文件.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filenam ...
- 网易前端JavaScript编码规范
在多年开发邮箱webmail过程中,网易邮箱前端团队积累了不少心得体会,我们开发了很多基础js库,实现了大量前端效果组件,开发了成熟的opoa框架以及api组件,在此向大家做一些分享.今天想先和大家聊 ...
- JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)
1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...
- 更改Windows控制台默认缓冲区行数和宽度
Windows控制台窗口默认的显示行数很少, 以至于有时候要显示很多东西的时候, 总是导致前面的内容丢失. 很不爽. 于是GG了下, 在StackOverflow上找到了答案~~~ 设置方式: 1. ...