MFC基本数据类型

刚接触MFC的人一看到里面各种各样的关键字肯定傻眼了.仿佛完全是另外一门语言了.因为MFC中把C++中的基本数据类型的关键字全改了一遍.这还不算变态,因为只是把小字改成大写.比较变态的是MFC里面是很多五花八门的类型实际上对应的是同一种基本类型.就算这样嘛多花点时间也还能熟悉.更加变态的是它还用自己的类型再定义其他类型.所以这些事都是用typedef这个宏干的.所以MFC里面到处是一堆堆的宏.

闲话少说,先来看下C++中有些啥基本数据类型

******************************************************************************************************

类 型 字节数

bool 1

char 1

wchar_t 2 (宽字符类型,存储Unicode代码值.用法wchart_t letter = L'a')

short 2

unsigned short 2 (unsigned 表示无符号,只能取非负数.unsigned short num = 123U ; //数字后面的U可加可不加)

int4 (整形默认为int,long型需在后加L,如long lNumber = 123L; //L可加可不加)

unsigned int 4 (可简写为unsigned)

long 4 (貌似不同的编译器中不一样,有时会是8,偶也不太确定)

__int64 8

unsigned long 4

float 4

double 8

long double 8 (有些地方貌似是12)

******************************************************************************************************

MFC中与之对应的是

NULL 0
VOID void

BOOL int


CHAR char
CCHAR char
UCHAR unsigned char
BYTE unsigned char
WCHAR wchar_t
_TCHAR wchar_t

SHORT short
WORD unsigned short
USHORT unsigned short

INT int
UINT unsigned int

LONG long
DWORD unsigned long
ULONG unsigned long
LONGLONG __int64
ULONGLONG unsigned __int64
FLOAT float
DOUBLE double

MFC中的指针类型

注意:据说far ,near等关键字在16位的系统上有用处,在32位上没啥用处.
数据类型 含义

LPVOID typedef void far *

LPCVOID typedef CONST void far *

PWSTR , LPWSTR __nullterminated WCHAR *

PCWSTR ,LPCSWTR __nullterminated CONST WCHAR *

PTSTR,LPTSTR LPWSTR

PCTSTR , LPCTSTR LPCWSTR

BSTR wchar_t字符指针.原因: 1.typedef OLECHAR *BSTR2.typedef WCHAR OLECHAR 3.typedef wchar_t WCHAR

一堆宏绕来绕去真他娘的麻烦.

PSTR,LPSTR __nullterminated CHAR *

PCSTR ,LPCSTR typedef __nullterminated CONST CHAR *

LPCRECT typedef RECT FAR*

HANDLE typedef void*

HFILE typedef int

规律:貌似前面加不加L都没啥区别.然后P自然就表示指针,C表示是指向常量的指针.

//Windows句柄类型HANDLE32位的无符号整数,用于标识

窗口句柄 HWND

实例句柄 HINSTANCE

光标句柄 HCURSOR

图标句柄 HICON

位图句柄 HBITMAP

菜单句柄 HMENU

设备描述句柄 HDC

钢笔句柄 HPEN

画刷句柄 HBRUSH

字体句柄 HFONT

文件句柄 HFILE

typedef struct tagRECT

{

LONG left;

LONG top;

LONG right;

LONG bottom;

} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;

COLORREF DWORD

64位指针问题

define _W64 __w64

#if defined(_WIN64)

typedef __int64 INT_PTR, *PINT_PTR;

typedef unsigned __int64 UINT_PTR, *PUINT_PTR;

typedef __int64 LONG_PTR, *PLONG_PTR;

typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;

#define __int3264 __int64

#else

typedef _W64 int INT_PTR, *PINT_PTR;

typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

typedef _W64 long LONG_PTR, *PLONG_PTR;

typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;

#define __int3264 __int32

#endif

typedef LONG_PTR LPARAM;

typedef LONG_PTR LRESULT;

typedef UINT_PTR WPARAM;

上面这一堆都是微软在宏中定义的.我们用的时候只要用到LPARAM ,LRESULT , WPARAM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值