原文出處未知 轉自http://www.cnblogs.com/alonecat06/archive/2008/09/07/1286320.html
近來學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。 |