匈牙利命名法
著名的命名规则当推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
int 整型(其大小依赖于操作系统) nLength
UINT  无符号值(其大小依赖于操作系统) nHeight
WORD  16位无符号值 wPos
LONG  32位有符号整型 lOffset
dw  DWORD  32位无符号整型  dwRange
指针 pDoc
lp  FAR*  远指针  lpszName
lpsz  LPSTR  32位字符串指针 lpszName
lpsz  LPCSTR  32位常量字符串指针 lpszName
lpsz  LPCTSTR  如果_UNICODE定义,则为32位常量字符串指针 lpszName
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 通过指针回调的函数 

库标识符命名法

标识符 值和含义
ANSI(N)或Unicode(U)
调试或发行: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程序就轻松多了)的更多相关文章

  1. 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法 C#命名规范

    匈牙利命名法.骆驼命名法.帕斯卡(pascal)命名法 C#命名规范 一.匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中. Windows 编程中用到的变量(还包括宏)的命名 ...

  2. C#帕斯卡命名法

    帕斯卡命名法 命名规则. 单字之间不以空格断开或 连接号 (-).底线(_)连结,第一个单词首字母采用 大写字母 :后续单词的首字母亦用大写字母,例如:FirstName.LastName.. 每一个 ...

  3. 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法

    (2008-05-24 13:37:55) 转载▼ 标签: 杂谈 分类: 编程杂文 一.匈牙利命名法:         广泛应用于象Microsoft Windows这样的环境中. Windows 编 ...

  4. 匈牙利命名法,骆驼命名法(camel),帕斯卡(Pascal)命名法(转)

    一.匈牙利命名法      Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) ...

  5. C++匈牙利命名法

    匈牙利命名法 匈牙利命名法是一种编程时的命名规范.基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分.命名要基于容易记忆容易理解的原则.保证 ...

  6. 命名法:骆驼(Camel)、帕斯卡(pascal)、匈牙利(Hungarian)、下划线(_)

    首先欢迎大家到来! 常用的命名法:骆驼(Camel).帕斯卡(pascal).匈牙利(Hungarian).下划线(_) 骆驼:是指混合使用大小写字母来构成变量和函数的名字 帕斯卡:与骆驼命名法类似只 ...

  7. JavaScript变量命名规则:匈牙利命名法

    匈牙利命名法语法 变量名=类型+对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 提示 虽然JavaScript变量表面上没有类型,但是Jav ...

  8. c++ 请抛弃匈牙利命名法 - 变量命名代码风格的建议。

    我只针对c++码农们讲,其他语言不了解不过应该大同小异.曾几何时翻开21天学通c++系列等脑残入门书,都以匈牙利命名法示人(DWORD dwXXX, int nXXX, string strXXX). ...

  9. 匈牙利命名法、Camel命名法与Pascal命名法

    Camel命名法:即骆驼式命名法,首字母小写,采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏.Camel命名法有两种形式: 1.混合使用大小写字母,例如runFast 2.单词之间加下划线,例如r ...

随机推荐

  1. 技术分享:WIFI钓鱼的入门姿势

    简介 该实验先是搭建一个测试环境,然后创建一个假的无线接入点,把网络连接连接到假的接入点并且强迫用户连接假的无线点. 事先准备 1.无线网卡:无线网卡用于数据包的嗅探和注入. 2. Backtrack ...

  2. 微信开发学习日记(八):7步看懂weiphp插件机制,核心目标是响应微信请求

    又经过了几个小时的梳理.回顾,截至目前,终于对weiphp这个框架的机制搞明白了些.想要完全明白,自然还需要大把的时间.第1步:   配置微信公众号,http://weiphp.jiutianniao ...

  3. 2模02day1题解

    源文件在我的网盘上.链接:http://pan.baidu.com/s/1qWPUDRm 密码:k52e (只有机智的人才能看到我的链接) 机智的双重下划线~~~ T1 T1就是一个递推,这题目把我恶 ...

  4. Linux统计文件个数

    查看某个文件夹下的文件个数用ls列目录,用grep过虑,再用wc统计即可 用ls -l列出后, 每一行对应一个文件或目录, 如果第一个字母为’-'则为普通文件, 若为’d'则为子目录 + +grep过 ...

  5. 【Spring】Spring系列2之bean的配置

    2.bean的配置 2.1.IOC概述 2.2.bean的获取 2.3.依赖注入方式 2.4.属性注入细节 内部bean,不需要ID,ID无效,外部不能引用: 2.5.集合属性注入 2.6.使用p命名 ...

  6. Excel Sheet Column Title & Excel Sheet Column Number

    Excel Sheet Column Title Given a positive integer, return its corresponding column title as appear i ...

  7. tcp ip detatils

    tcp ip detatils 8.关于TCP协议,下面哪种说法是错误的()A.TCP关闭连接过程中,两端的socket都会经过TIME_WAIT状态B.对一个Established状态的TCP连接, ...

  8. windows2003批量添加和导出所有ip

    批量添加IP 在cmd命令行下运行: FOR /L %i IN (130,1,190) DO netsh interface ip add address "本地连接" 192.1 ...

  9. 【转】Duplicate Elimination in Scrapy

    本文转载自:http://blog.pluskid.org/?p=381 之前介绍 Scrapy 的时候提过 Spider Trap ,实际上,就算是正常的网络拓扑,也是很复杂的相互链接,虽然我当时给 ...

  10. BestCoder14 1002.Harry And Dig Machine(hdu 5067) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 题目意思:给出一个 n * m 的方格,每一个小方格(大小为1*1)的值要么为 0 要么为一个正 ...