『MFCプローブ』の変数タイプ
MFCプログラミングに触れたばかりで、私の頭の大きいことが現れました.-これらの変数は私はどうして知らないのですか.もしあなたもこのような感じがあれば、このブログはあなたにいくつかの啓発を与えます~ MFCで定義された基本変数 まず、すべての変数が小文字から大文字に定義されます.例: すべての符号なし変数はUを加えて区別される.例: すべてのポインタタイプ変数にPを付けて区別します.例: すべての定数ポインタはCを使用します.例: 構造体タイプ.主に三つのPOINT、SIZE、RECT
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;//
typedef unsigned int UINT;
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 , ~)。
typedef CONST void* LPCVOID;
typedef CONST CHAR *LPCSTR, *PCSTR;//
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”;//間違いを報告しない
*/