匈牙利命名法
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 |
?
前缀 |
类型 |
描述 |
实例 |
arr |
Array |
静态数组 |
arrPoint |
b |
BOOL |
布尔值 |
bEnabled |
by |
unsigned char(BYTE) |
8位无符号字符 |
byWeek |
ch |
Char |
8位字符 |
chGrade |
tch |
TCHAR |
如果是_UNICODE,为16位字符 |
tchName |
i/n |
Int |
整形(其大小依赖于操作系统) |
iRange |
u |
UINT |
无符号整形(其大小依赖于操作系统) |
nLength |
us |
unsigned short |
无符号短整形 |
usPort |
w |
WORD |
16位无符号值 |
wParam |
l |
LONG |
32位有符号整形 |
loffset |
dw |
DWORD |
32位无符号整形 |
dwVolume |
f |
Float |
4字节浮点数 |
fHigh |
d |
Double |
8字节浮点数 |
dAmount |
cy |
CURRENCY |
8字节货币类型 |
cySell |
p |
* |
指针 |
pDoc |
lp |
FAR * |
远指针 |
lpDoc |
lpsz |
LPSTR |
为32位字符串指针 |
lpszName |
lpcsz |
LPCSTR |
32位常量字符串指针 |
lpcszName |
lpctsz |
LPCTSTR |
如果_UNICODE定义,为32位常量字符串指针 |
lpctszName |
bstr |
BSTR |
带有4字节长度前缀的w_chart数组 |
bstrMessage |
pbstr |
BSTR* |
BSTR数据类型指针 |
pbstrMsg |
str |
String |
CString类型的字符串 |
strMessage |
och |
OLECHAR |
OLECHAR字符类型 |
ochX |
osz |
OLECHAR* |
OLECHAR字符串类型 |
oszX |
var |
VARIANT |
VARIANT数据类型 |
var |
pvar |
VARIANT* |
VARIANT数据类型指针 |
pvar |
sa |
SAFEARRAY |
SAFEARRAY数据类型 |
sa |
psa |
SAFEARRAY* |
SAFEARRAY数据类型指针 |
psa |
dlg |
CDialog |
Windows对话框 |
dlg |
stc |
CStatic |
Windows静态文本控件 |
stc |
edt |
Cedit |
Windows编辑框控件 |
edt |
lsb |
CListBox |
Windows列表控件 |
lsb |
btn |
CButton |
Windows按钮控件 |
btn |
scb |
CScrollBar |
Windows滚动条控件 |
scb |
spn |
CSpinButtonCtrl |
Windowswe微调按钮控件 |
spn |
tab |
CTabCtrl |
Windows选项卡控件 |
tab |
rtf |
CRichEditCtrl |
Windows富文本编辑框控件 |
rtf |
sld |
CSliderCtrl |
Window滑块控件 |
sld |
list |
ClistCtrl |
Windows列表控件 |
list |
tre |
CtreeCtrl |
Windows树形控件 |
tre |
dtc |
CDateTimeCtrl |
Windows时间选取器控件 |
dtc |
prg |
CProgressCtrl |
Windows进度指示器控件 |
prg |
cbo |
CComboBox |
Windows组合框控件 |
cbo |
ils |
CImageList |
Windows图像列表 |
ils |
tlb |
CToolBarCtrl |
Windows工具条控件 |
tlb |
mnu |
Cmenu |
Windows菜单控件 |
mnu |
sta |
CStatusBar |
Windows状态条控件 |
sta |
wnd |
CWnd |
Windows窗口 |
wnd |
cx |
X |
Windows X座标 |
cx |
cy |
Y |
Windows Y座标 |
cy |
pt |
Cpoint |
Windows点阵 |
hWnd |
size |
Csize |
Windows尺寸 |
size |
rect/rc |
Crect |
Windows矩形 |
rect |
pen |
Cpen |
Windows画笔 |
pen |
br |
Cbrush |
Windows刷子 |
br |
fnt |
Cfont |
Windows字体 |
fnt |
cr |
COLORREF |
Windows颜色值RGB |
cr |
PMp |
Temp |
临时变量 |
PMpBuff |
h |
Handle |
Windows对象句柄 |
hWnd |
lpfn |
Callback |
指向CALLBACK函数的远指针 |
lpfnAbort |
it/iter |
iterator |
迭代子 |
it |
vect |
std::vector |
标准模板库 |
vect |
map |
std:map |
标准模板库 |
map |
deque |
std:deque |
标准模板库 |
deque |
list |
std:list |
标准模板库 |
list |
set |
std:set |
标准模板库 |
Set |
multiset |
std:multiset |
标准模板库 |
multiset |
multimap |
std:multimap |
标准模板库 |
multimap |
指针类型的变量,必须加上前缀"p",如:int* pnValue;。
全局(静态)变量的命名规则同第一条的规定,并且必须加上前缀"g_"。
类成员(静态)变量的命名规则同第一条的规定,并且必须加上前缀"m_"。
模块(函数/过程)内部的重要变量命名遵循第一条的规定。
模块(函数/过程)内部的静态变量命名遵循第一条的规定,并且加上前缀"s_"。
其余变量在不损害程序易读易懂原则的基础上酌情处理。这些变量通常是模块内的临时变量,如循环控制变量、数组的下标等,它们可用缩写进行简化处理,如:int i;。
宏(#define)或者常量修饰符(const):大写字母组成的名词词组,单词间用下划线作为连接符,如:#define INVALID_CLOSE 0; const double INVALID_CLOSE = double(0);。
枚举类型(enum):此时的命名规则同"变量命名的一般性规则",可参考MFC或ADO等的命名方式。
单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:void DrawLine ( void );。
3.1.1.3 类命名规则
类的原型,是前缀"C"加单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:class CStockPacket; class CPacket;。
类的实例变量,采用小写首字母缩写的方式定义,如:CStockPacket sp;。
在对类的成员变量和成员函数定义时,要加以分类,并界定相应的存取权限(参见表二:类成员的分类描述)
分类描述 |
存取权限(依实际应用而定) |
// Constructors |
Public |
// Attributes |
Private |
// Operations(对于com组件是//Methods) |
Public |
// Overridables |
Protected |
// Implementation |
Private |
结构的原型采用组合词的方式定义,并且全部采用大写字符的形式。如:
typedef struct tagStockTrans
{
DWORD dwOpen;
...
} STOCKTRANS;
结构的实例变量,采用小写首字母缩写的方式定义,如:STOCKTRANS st;。