近来学MFC,看到很多的变量命名都觉得很诡异,但又觉得其中必有一定的规律。看了该文章后才茅塞顿开,原来变量的命名也有大学问在里头。
匈牙利表示法:
它通过在每一个表示符名字的前面放置一个数据类型助记符,为程序员提供了对标识符的即时识别。
1.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 |
hpalette |
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 |
CRet |
rect |
2.一般前缀命名规范
前缀 |
类型 |
实例 |
C |
类或结构 |
CDocument,CPrintInfo |
m_ |
成员变量 |
m_pDoc, |
3.变量名规范
前缀 |
类型 |
描述 |
实例 |
ch |
char |
8为字符 |
chGrade |
ch |
TCHAR |
如果_UNICODE定义,为16位字符 |
chName |
b |
BOOL |
布尔值 |
bEnabled |
n |
int |
整型(其大小依赖于操作系统) |
nLength |
n |
UNIT |
无符号值(其大小依赖于操作系统) |
nLength |
w |
WORD |
16位无符号值 |
wPos |
l |
LONG |
32位有符号整型 |
lOffset |
dw |
DWORD |
32位无符号整型 |
dwRange |
p |
* |
指针 |
pDoc |
lp |
FAR* |
远指针 |
lpDoc |
lpsz |
LPSTR |
32位字符串指针 |
lpszName |
lpsz |
LPCTSTR |
如果_UNICODE定义,位32位常量字符串指针 |
lpszName |
h |
handle |
Windows对象句柄 |
hWnd |
lpfn |
callback |
指向CALLBACK函数的远指针 |
lpfnAbort |
4.应用程序符号命名规范
前缀 |
符号类型 |
实例 |
范围 |
IDR_ |
不同类型的多个资源共享标识 |
IDR_MAINFRAME |
1-0x6FFF |
IDD_ |
对话框资源 |
IDD_SPELL_CHECK |
... |
HIDD_ |
对话框资源的Help上下文 |
HIDD_SPELL_CHECK |
0X20001-0X26FF |
IDB_ |
位图资源 |
IDB_COMPANY_LOGO |
1-0X6FFF |
IDC_ |
光标资源 |
IDC_PENCIL |
... |
IDI_ |
图表资源 |
IDI_NOTEPAD |
... |
ID_ |
来自菜单项或工具栏的命令 |
ID_TOOLS_SPELLING |
0x8000-0xDFFF |
HID_ |
命令Help上下文 |
HID_TOOLS_SPELLING |
... |
IDP_ |
消息框提示 |
IDP_INVALID_PARINO |
8-0xDFFF |
HIDP_ |
消息框Help上下文 |
HIDP_INVALID_PARINO |
0X30008-0x3DFFF |
IDS_ |
串资源 |
IDS_COPYRIGHT |
1-0x7FFF |
IDC_ |
对话框内的控件 |
IDC_RECALC |
8-0xDFFF |
5.Microsoft MFC宏命名规范
名称 |
类型 |
_AFXDLL |
唯一的动态连接库(Dynamic |
_ALPHA |
仅编译DEC |
_DEBUG |
包括诊断的调式版本 |
_MBCS |
编译多字节字符集 |
_UNICODE |
在一个应用程序中打开Unicode |
AFXAPI |
MFC提供的函数 |
CALLBACK |
通过指针回调的函数 |
6.库标识命名规范
指示符 |
值和含义 |
u |
ANSI(N)或Unicodeu(U) |
d |
调试或发行:D=调式;忽略指示符为发行 |
7.静态库版本命名规范
库 |
描述 |
NAFXCWD.LIB |
调试版本:MFC静态连接库 |
NAFXCW.LIB |
发行... |
UAFXCWD.LIB |
调试版本:具有Unicode支持的MFC静态连接库 |
UAFXCW.LIB |
发行... |
8.动态库连接命名规范
名称 |
类型 |
_AFXDLL |
唯一的动态连接库(DLL)版本 |
WINAPI |
Windows所提供的函数 |
9.Windows.h命名规范
类型定义 |
描述 |
WINAPI |
使用在API自己的API中使用该类型 |
CALLBACK |
使用在应用程序回叫例程如窗口和对话框中的FAR |
LPCSTR |
与LPSTR相同,但LPCSTR用于只读串指针,其定义类似于(const char FAR*) |
UNIT |
与可移值的无符号整型类型,其大小由主机环境决定(对Windows NT和Windows 95为32位)。它是unsigned int的同义词,使用WORD位置,在一个32位的平台上希望得到一个16为无符号值的极少数情况除外 |
LRESULT |
窗口程序返回值的类型 |
LPARAM |
声明lParam所使用的类型,lParam 是窗口程序的第四个参数 |
WPARAM |
声明wParam所使用的类型, wParam是窗口程序的第三个参数(一种组合数据类型) |
LPVOID |
一般的指针类型,与(void*)等同。应该使用它来代替LPSTR。 |