匈牙利命名法
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;。