『MFCプローブ』の変数タイプ

5871 ワード

MFCプログラミングに触れたばかりで、私の頭の大きいことが現れました.-これらの変数は私はどうして知らないのですか.もしあなたもこのような感じがあれば、このブログはあなたにいくつかの啓発を与えます~
  • MFCで定義された基本変数
  • まず、すべての変数が小文字から大文字に定義されます.例:
  •     typedef int                     BOOL;//TRUE FALSE
        typedef unsigned char           BYTE;
        typedef float                   FLOAT;
        typedef int                     INT;
        typedef char                    CHAR;
        typedef short                   SHORT;
        typedef long                    LONG;
        typedef CHAR* PCHAR,  LPSTR; //         
        #ifndef VOID
        #define VOID void
    さらに字の定義があります:
        typedef unsigned long       DWORD;//  
        typedef unsigned short      WORD;//  
  • すべての符号なし変数はUを加えて区別される.例:
  •     typedef unsigned int        UINT;
  • すべてのポインタタイプ変数にPを付けて区別します.例:
  •     typedef FLOAT               *PFLOAT;
        typedef BOOL near           *PBOOL;
        typedef BOOL far            *LPBOOL;
        typedef BYTE near           *PBYTE;
        typedef BYTE far            *LPBYTE;
        typedef int near            *PINT;
        typedef int far             *LPINT;
        typedef WORD near           *PWORD;
        typedef WORD far            *LPWORD;
        typedef long far            *LPLONG;
        typedef DWORD near          *PDWORD;
        typedef DWORD far           *LPDWORD;
        typedef void far            *LPVOID;
        typedef CONST void far      *LPCVOID;
    //near far c          ,             (  16  dos    ,   64K   ,    ~)。
  • すべての定数ポインタはCを使用します.例:
  •     typedef CONST void*         LPCVOID;
        typedef CONST CHAR *LPCSTR, *PCSTR;//         
  • 構造体タイプ.主に三つのPOINT、SIZE、RECT
        typedef struct tagPOINT
        {
            LONG  x;
            LONG  y;
        } POINT, *PPOINT, *LPPOINT;//     
    
    
        typedef struct tagSIZE
        {
            LONG        cx;
            LONG        cy;
        } SIZE, *PSIZE, *LPSIZE;
    
        typedef struct tagRECT
        {
            LONG    left;
            LONG    top;
            LONG    right;
            LONG    bottom;
        } RECT, *PRECT, *LPRECT;
    
    3.     **    **。
                      。   HWND   :

    DECLARE_HANDLE (HWND);

    #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
    
            HWND        ,        unused,(    ~)。
    
        - HWND       
        - HINSTANCE        
        - HCURSOR      
        - HICON      
        - HMENU      
        - HFONT      
        - HFILE      
        -  
    
    4.     **       **
              ,       。    ,             ,               (     )。  ,          ,     --Unicode。
    
        vs      ,   Unicode   。    **wchar_t**   Unicode      ,             **L**。**TCHAR**     ,  char wchar_t     。
    const char * p = “aaa”;//メモリでは、aごとに1バイトを占有する
    const char*pc=「中国」//メモリに漢字1文字あたり2バイト
    const wchar_t * pU = L”aa”;//メモリ内で、aごとに2バイト占有
    const wchar_t*pcU=L"中国";//メモリには、漢字ごとに1バイトを占有
    const TCHAR * s = L”aa”;//このTCHAR宣言の場合、Unicode符号化の列として宣言する必要があります
    /*
    //vsの符号化方式を「マルチバイト文字セット」に変更した後
    const TCHAR *s =L”aa”;//TCHARはcharタイプなので、これは間違っています.
    const TCHAR *s =”aa”;//間違いを報告しない
    */