zoukankan      html  css  js  c++  java
  • 【转载】匈牙利表示法

    近来学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

    ANSIN)或UnicodeuU

    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 NTWindows 9532位)。它是unsigned int的同义词,使用WORD位置,在一个32位的平台上希望得到一个16为无符号值的极少数情况除外

    LRESULT

    窗口程序返回值的类型

    LPARAM

    声明lParam所使用的类型,lParam 是窗口程序的第四个参数

    WPARAM

    声明wParam所使用的类型, wParam是窗口程序的第三个参数(一种组合数据类型)

    LPVOID

    一般的指针类型,与(void*)等同。应该使用它来代替LPSTR

  • 相关阅读:
    ACE反应器(Reactor)模式(1)
    net 命令
    ACE反应器(Reactor)模式(2)
    恢复SQLServer实例连接 (转载)
    在SQL Server Management Studio中可以运行作业但是用TSQL运行则失败 (转载)
    VirtualBox 之 共享磁盘
    从 IClassFactory 为 CLSID 为 {0002450000000000C000000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法 .
    SQLServer数据类型优先级对性能的影响 (转)
    封装getElementsByAttribute
    js中setAttribute 的兼容性
  • 原文地址:https://www.cnblogs.com/alonecat06/p/1286320.html
Copyright © 2011-2022 走看看