大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
Windows
编程中用到的匈牙利命名法。匈牙利命名法通过在变量名前面加上对应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号能够多个同一时候使用,顺序是先
m_
(成员变量),再指针,再简单数据类型,再其它。比如:
m_lpszStr,
表示指向一个以
0
字符结尾的字符串的长指针成员变量。
Microsoft
程序猿查尔斯
·
西蒙尼
(Charles Simonyi)
提出的,他出生在匈牙利。在
Microsoft
公司中和他一起工作的人被教会使用这样的约定。这对他们来说一切都非常正常。但对那些
Simonyi
领导的项目组之外的人来说却感到非常奇特,他们觉得这是死板的表达方式,甚至说代有这样奇怪的外观是由于它是用匈牙利文写的。从此这样的命名方式就被叫做匈牙利命名法。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
前 缀 |
类 型 |
a |
数组 (Array) |
b |
布尔值 (Boolean) |
by |
字节 (Byte) |
c |
有符号字符 (Char) |
cb |
无符号字符 (Char Byte ,没有多少人用 ) |
cr |
颜色參考值 (ColorRef) |
cx,cy |
坐标差(长度 ShortInt ) |
dw |
Double Word |
fn |
函数 |
h |
Handle |
i |
整型 |
l |
长整型 (Long Int) |
lp |
Long Pointer |
m_ |
类的成员 |
n |
短整型 (Short Int) |
np |
Near Pointer |
p |
Pointer |
s |
字符串型 |
sz |
以 null 做结尾的字符串型 (String with Zero End) |
w |
Word |
Unix
编程,在使用没有变量名、keyword自己主动补齐功能的编辑器,如
vi
下,去敲入大写和小写混合的变量名是痛苦的。事实上仅仅要注意两个原则:
1)
含义清晰,不易混淆;
2)
不和其他模块、系统
API
的命名空间相冲突就可以。
1.
有意识的为变量名、宏名加上本模块的keyword,就不至于和其他模块、系统
API
的命名空间相冲突;比如
:
宏的名称过短,如:
DEBUG;
或
_DEBUG
,非常可能和别的模块,系统模块相冲突;
2.
局部变量尤其是循环变量外,使用约定俗成的
i,j,k
,没有问题;
3.
宏、常量、枚举
enum
,所实用大写字母;
4.
全局变量加上前缀
“g”
,后面跟上首字母大写的单词;
、句柄、控件及结构的命名规范
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 |
宏命名规范
名称 |
类型 |
_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 所提供的函数 |
中新的命名规范
类型 |
定义描写叙述 |
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 |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118091.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...