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 |
變量命名規範
前綴類型描述實例chchar8位字符chGradech TCHAR如果_UNICODE定義,則爲16位字符chNamebBOOL布爾值bEnablen int整型(其大小依賴於操作系統)nLengthn UINT 無符號值(其大小依賴於操作系統)nHeightw WORD 16位無符號值wPosl LONG 32位有符號整型lOffsetdw DWORD 32位無符號整型 dwRangep * 指針pDoclp FAR* 遠指針 lpszNamelpsz LPSTR 32位字符串指針lpszNamelpsz LPCSTR 32位常量字符串指針lpszNamelpsz LPCTSTR 如果_UNICODE定義,則爲32位常量字符串指針lpszNameh handle Windows對象句柄hWndlpfn callback指向CALLBACK函數的遠指針應用程序符號命名規範
前綴符號類型實例範圍IDR_ 不同類型的多個資源共享標識IDR_MAIINFRAME1~0x6FFFIDD_對話框資源IDD_SPELL_CHECK 1~0x6FFFHIDD_對話框資源的Help上下文HIDD_SPELL_CHECK 0x20001~0x26FFIDB_ 位圖資源IDB_COMPANY_LOGO 1~0x6FFFIDC_光標資源IDC_PENCIL 1~0x6FFFIDI_圖標資源IDI_NOTEPAD 1~0x6FFFID_來自菜單項或工具欄的命令ID_TOOLS_SPELLING 0x8000~0xDFFFHID_命令Help上下文HID_TOOLS_SPELLING 0x18000~0x1DFFFIDP_消息框提示IDP_INVALID_PARTNO 8~0xDEEFHIDP_消息框Help上下文HIDP_INVALID_PARTNO 0x30008~0x3DEFFIDS_串資源IDS_COPYRIGHT 1~0x7EEFIDC_對話框內的控件IDC_RECALC 8~0xDEEF應用程序符號命名規範
前綴 | 符號類型 | 實例 | 範圍 |
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 |
應用程序符號命名規範
前綴 | 符號類型 | 實例 | 範圍 |
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 |
前綴 | 符號類型 | 實例 | 範圍 |
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 |
1.1 構造匈牙利名稱
一個通常的匈牙利名稱由一個或者多個前綴(prefix)、一個基本標識(base tag)和一個修飾符(qualifier)拼接而成。基本標識指示了變量的類型(如"co"代表color),前綴修正該類型(如"rg"表示數組,那麼"rgco"就表示顏色數組),修飾符描述了該特定類型的應用(如"rgcoGray"表示用作灰度的顏色數組)。並非所有名字都會使用全部組成元素,前綴往往是不需要的,而當類型的應用是顯而易見的時候,比如當代碼中只包含一個相關類型時,修飾符也可以省略。
值得提醒的是:許多(也許絕大部分)基本標識和修飾符將是應用程序相關的,因爲它們被用於表示應用程序定義的類型和應用。雖然我們已經爲一些基本類型定義了標準標識(下面將列出其中一部分),但是在更適於使用抽象類型的場合下使用這些標準標識是錯誤的。例如,如果一個color恰好是用long來實現的,那麼有人可能會用"rgl"來標識一個顏色數組,但是這樣將破壞對color的抽象。
當匈牙利命名法用於函數名稱時,修飾符通常僅僅標識了函數的動作。有時在基本標識符後添加描述函數參數的匈牙利類型會很有用。當然,函數名的首字母一定要大寫。例如"FInitFooFromHwndXY"應當是一個函數的名字,該函數將使用類型爲Hwnd,X和Y的參數來初始化一個"foo"結構,並且返回一個Boolean成功代碼。這種做法並非強制性的,只有當這樣做會讓函數名更易於理解才這樣做。
1.2 標準基本標識
下面的表中給出了基本類型的標準基本標識。如上所述,應用程序將爲其內部類型定義許多自己的標識。
f | 標誌(BOOL)。取值爲TRUE或者FALSE。修飾符應當描述何時該標誌爲TRUE,例如fError表示當錯誤發生時變量爲TRUE。 |
ch | 單字節字符(CHAR)。 |
sz | 以0結尾的CHAR型字符串(經典的C字符串)。有時可以描述字符串的最大長度,如"sz255"表示實際的字符串體可以容納255個字符,因此必需分配256個字符。 |
st | 帶長度前綴的CHAR型字符串。這種字符串長度不超過255個字符,因爲其長度必須存放在一個字節中。如同sz一樣,可以用"st32"來表示字符串最大長度爲32,因此需要分配33個字符空間來存放字符及其長度。 |
stz | 帶長度前綴同時也以0結尾的CHAR型字符串。注意如果在名稱中描述了長度length,那麼至少要分配length+2個CHAR。 |
chw, wt, wz, wtz | ch,sz,st和stz的寬字符(WCHAR)版本。所有最終用戶可見的字符串都必須使用寬字符串(UNICODE)。 |
fn | 函數。通常和"p"前綴(見下)連用成爲"pfn",因爲在C中只能將函數地址存放在變量中。 |
b | 一個BYTE。 |
w | 一個16位的無符號數量值(WORD, SHORT, or USHORT)。 |
dw | 一個32位的無符號雙字(DWORD)。 |
l | 一個LONG (有符號32位數量值). |
u | 一個無符號長整型數(ULONG)。在經典的匈牙利命名法中,這代表一個無符號word,在Office中,這代表一個無符號32位數量值,與"dw"相同,但是當類型是數值時更傾向用"u"標識(和ULONG類型)。 |
v | Void類型。總是和"p"連用構成"pv",標識指向未知類型的指針。 |
sc | OLE SCODE |
hr | OLE HRESULT |
var | OLE VARIANT |
varg | OLE VARIANTARG |
1.3 標準前綴
下面表中給出了用於修飾基本標識類型的標準前綴。可以使用一個或者多個前綴。應用程序有可能(但是可能很罕見)需要定義自己的前綴(典型情況是一個應用程序將只定義基本標識和修飾符)。
p | 指針。例如"pch"標識指向一個字符的指針,在經典的微軟匈牙利命名法中,"p"代表near pointer,相應地,"lp"和"hp"用於表示long (far) pointer和huge pointer。在32位世界裏,這不再是個問題了。 |
rg | 數組(從"range"變來)。例如"rgch"表示字符數組。同C/C++用法一樣,這可以是一個分配好的數組的名字,也可以是指向數組的指針的名字。 |
i | 基本類型數組的索引。例如"ich"表示字符數組的索引。 |
c | 基本類型項目的總數。例如"cch"表示字符總數。 |
n | 另一種表示某基本類型項目的總數的前綴(表示"number of"),但是最好用"c"。 |
d | 某基本類型值的差值,例如"dx"表示兩個類型爲x的值的差。 |
h | 句柄。一個到不能被用戶間接訪問的某基本類型項目的非透明引用(過去使用此定義是因爲對可移動內存塊有不同用法)。例如"hwnd"是到窗口("wnd")的句柄,因爲句柄不在你的地址空間中,所以不允許你間接訪問窗口結構中的域(這樣還保持了非透明引用的抽象性)。一個應用程序模塊應當引出指向抽象數據類型的句柄(典型地應當定義爲void *),這樣客戶就只能使用此引用而絕對不能看到其中的數據域。然而在C++中,由於可以通過私有數據成員來引出指向類對象的指針,因此這樣做已經不那麼必要了。 |
pl | 一 “ 從 ”對象(A “plex” of objects)。這是簡單數組(”rg”)之外的另一種選擇,表示了使用plex抽象以標準方式可變的數組(參見inc/msoalloc.h)。 |
mp | 用於將索引或者其它標量映射到值的數組。此前綴後面要加上索引和值的標識,如"mpchdx"表示將字符值(作爲數組索引)映射到該字符對應的dx值上的數組。 |
V | 全局變量,總是第一個前綴。 |
除此之外,我們還可以在合適的時候添加下面的一些前綴到任何匈牙利命名前綴之前:
m_ | C++類的數據成員。 |
s_ | C++類的靜態數據成員。 |
Mso | 引出的全局函數。 |
MSO | 引出的自定義類型。 |
mso | 引出的全局常量或者全局變量。 |
1.4 標準修飾符
大部分修飾符都按照該名字被使用的場合來定義,但是還是有一些預定義的標準修飾符如下:
First | 集合中的第一個元素或者第一個感興趣的元素(如pchFirst)。 |
Last | 集合中的最後一個原始或者最後一個感興趣的元素(如pchLast)。當用作索引時,Last表示最後一個合法的/期望的值,因此循環可以如下定義: |
Lim | 集合中元素的上限。與Last不同,Lim不表示合法值,Lim是最後一個合法值加1,因此循環可以如下定義: |
Min | 集合中的最小元素,類似於First,但是通常表示第一個合法值,而不僅僅是第一個要處理的值。 |
Max | 集合中元素的上限(和Lim一樣)。不幸的是,"Max"的正常英語讀法通常暗示了最後一個合法值,但是Max修飾符不表示合法值,而是合法值加1。和Lim一樣,Max的典型用法如下: for (ich = ichMin; ich < ichMax; ich++) |
Mac | 類似於Max,但是有時用於 “ 當前 ” 最大值會隨着時間而改變的情況下。注意Mac也是最後一個合法值加1。 |
Mic | 類似於Min,但有時用於“ 當前 ” 最小值會隨着時間而改變的情況下。 |
T | 臨時值。此修飾符可能被作爲避免創建新的好名字的一種方法而被濫用,但是有時將其用於聲明簡單的臨時值是適合的,如在經典的swap操作中那樣。 |
TT, T3,等等 | 在需要更多唯一名字的時候對 T = temporary 約定的進一步濫用。應當完全避免。 |
Sav | 用於保存值的臨時值,以便將來恢復。例如: |
Null | 特定的0值。雖然總是等於0,但是可用於文檔化的目的(如hwndNull)。 |
Nil | 特定的非法值,不必要等於0(可能是-1或者任何其它值)。爲了避免混淆,最好不要爲同一類型同時定義Null和Nil值。 |
Src | 操作源,典型地用法是和Dest配套使用,如: *pchDest = *pchSrc |
Dest | 操作目的,參見Src。 |
在VB中使用匈牙利命名法的時候情況略微特殊
由於VB時不區分大小寫的,所以採用有意義的命名規則應該更加有意義。
本文引用通告地址: http://blog.csdn.net/lionhearter/services/trackbacks/183533.aspx
a Array 數組
b BOOL (int) 布爾(整數)
by Unsigned Char (Byte) 無符號字符(字節)
c Char 字符(字節)
cb Count of bytes 字節數
cr Color reference value 顏色(參考)值
cx Count of x (Short) x的集合(短整數)
dw DWORD (unsigned long) 雙字(無符號長整數)
f Flags (usually multiple bit values) 標誌(一般是有多位的數值)
fn Function 函數
g_ global 全局的
h Handle 句柄
i Integer 整數
l Long 長整數
lp Long pointer 長指針
m_ Data member of a class 一個類的數據成員
n Short int 短整數
p Pointer 指針
s String 字符串
sz Zero terminated String 以0結尾的字符串
tm Text metric 文本規則
u Unsigned int 無符號整數
ul Unsigned long (ULONG) 無符號長整數
w WORD (unsigned short) 無符號短整數
x,y x, y coordinates (short) 座標值/短整數
v void 空
以上轉載來自:http://seanlee.blogbus.com/logs/2004/12/560998.html