?? vc里一些容易混淆的地方.txt
字號:
1.FALSE/TRUE與false/true的區別:
false/true是標準C++語言里新增的關鍵字,而FALSE/TRUE是通過#define,這要用途
是解決程序在C與C++中環境的差異,以下是FALSE/TRUE在windef.h的定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
也就是說FALSE/TRUE是int類型,而false/true是bool類型;所以兩者不一樣的,只不過
我們在使用中沒有這種感覺,因為C++會幫你做隱式轉換。
2.bool的大小與BOOL的區別:
bool在C++里是占用1字節,而BOOL是int類型,int類型的大小是視具體環境而定的;所以
來說:false/true只占用1個字節,而TRUE/FALSE視具體環境而言,以下是BOOL在windef
.h中的定義:typedef int BOOL;
3.NULL與0的區別:
還是讓我們看一下windef.h中NULL的定義:
#ifndef NULL
#ifdef __cplusplus//這個是指示是用C++來編譯程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
所以說:它們沒有區別,只不過在C里面會做一個強制類型轉換。
4.HINSTANCE與HMODULE的區別:
在windef.h中的定義:
typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */
5.CALLBACK,WINAPI的實質:
在windef.h中的定義:
#undef far
#undef near
#undef pascal
#define far
#define near
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
#define pascal __stdcall
#else
#define pascal
#endif
#if defined(DOSWIN32) || defined(_MAC)
#define cdecl _cdecl
#ifndef CDECL
#define CDECL _cdecl
#endif
#else
#define cdecl
#ifndef CDECL
#define CDECL
#endif
#endif
#ifdef _MAC
#define CALLBACK PASCAL
#define WINAPI CDECL
#define WINAPIV CDECL
#define APIENTRY WINAPI
#define APIPRIVATE CDECL
#ifdef _68K_
#define PASCAL __pascal
#else
#define PASCAL
#endif
#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#else
#define CALLBACK
#define WINAPI
#define WINAPIV
#define APIENTRY WINAPI
#define APIPRIVATE
#define PASCAL pascal
#endif
6.一些常見類型的定義:
在windef.h中的定義:
typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;
typedef int INT;
typedef unsigned int UINT;
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef unsigned long ULONG;
typedef unsigned short USHORT;
typedef unsigned char UCHAR;
typedef char *PSZ;
7.常見Window資源類型的實質:
在windef.h中的定義:
DECLARE_HANDLE(HPEN);
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HBRUSH);
DECLARE_HANDLE(HDC);
DECLARE_HANDLE(HFONT);
DECLARE_HANDLE(HICON);
DECLARE_HANDLE(HMENU);
DECLARE_HANDLE(HMETAFILE);
DECLARE_HANDLE(HINSTANCE);
DECLARE_HANDLE(HPALETTE);
typedef WORD ATOM;
typedef HANDLE HGLOBAL;
typedef HANDLE HLOCAL;
typedef HANDLE GLOBALHANDLE;
typedef HANDLE LOCALHANDLE;
typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
typedef DWORD COLORREF;
在windowsx.h中:
#define DECLARE_HANDLE32 DECLARE_HANDLE
penwin.h:
#ifndef DECLARE_HANDLE32
#define DECLARE_HANDLE32(name)\
struct name##__ { int unused; };\
typedef const struct name##__ FAR* name
#endif //!DECLARE_HANDLE32
6.PlatForm的編譯版本的相關預處理宏:
Macro Description
__cplusplus Defined for C++ programs only.
_MFC_VER Defines the MFC version. Defined as 0x0421 for Microsoft Foundation
Class Library 4.21. Always defined.
_MSC_VER Defines the compiler version. Defined as 1200 for Microsoft Visual
C++ 6.0. Always defined.
_WIN32 Defined for applications for Win32?. Always defined.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -