概述
MFC常用数据类型:
1、
UINT A 16-bit unsigned integer on Windows versions 3.0 and 3.1; a 32-bit unsigned integer on Win32.
定义原型:
typedef unsigned int UINT;
2、
bool应该是C语言里定义的,返回值为true和false(事实上就上1和0)
BOOL应该是MFC及SDK里定义返回值的.
它的定义应该是:typedef int BOOL;(WINDEF.H中定义)
也就是说它是int型的
返回值是大写的TRUE 和FALSE
定义如下:
#define FALSE 0
#define TRUE 1
(AFX.H中如此定义)
3、
BSTR A 32-bit character pointer 32位的字符指针。
定义原型:
#if defined(WIN32) && !defined(OLE2ANSI)
typedef WCHAR OLECHAR;
#else
typedef char OLECHAR;
#endif
typedef OLECHAR* BSTR;
4、
BYTE An 8-bit integer that is not signed.无符号8位整数。注意整数和整型int不一样。
定义原型:
typedef unsigned char BYTE;
5、
COLORREF A 32-bit value used as a color value.
定义原型:
typedef DWORD COLORREF;
6、
DWORD A 32-bit unsigned integer or the address of a segment and its associated offset.
定义原型:
typedef unsigned long DWORD;
7、
LONG A 32-bit signed integer.
定义原型:
typedef long LONG;
8、
LPARAM A 32-bit value passed as a parameter to a window procedure or callback function.
定义原型:
typedef LONG LPARAM;
9、
LPCSTR A 32-bit pointer to a constant character string
定义原型:
typedef CONST CHAR *LPCSTR, *PCSTR;
10、
LPSTR A 32-bit pointer to a character string.
定义原型:
typedef CHAR *LPSTR, *PSTR;
11、
LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS.
定义原型:
typedef LPCSTR LPCTSTR;
12、
LPTSTR A 32-bit pointer to a character string that is portable for Unicode and DBCS.
定义原型:
typedef LPSTR PTSTR, LPTSTR;
13、
LPVOID A 32-bit pointer to an unspecified type.
定义原型:
typedef void far *LPVOID;
14、
LRESULT A 32-bit value returned from a window procedure or callback function.
定义原型:
typedef LONG LRESULT;
15、
WNDPROC A 32-bit pointer to a window procedure.
定义原型:
typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
16、
WORD A 16-bit unsigned integer.
定义原型:
typedef unsigned short WORD;
17、
WPARAM A value passed as a parameter to a window procedure or callback function: 16 bits on Windows versions 3.0 and 3.1; 32 bits on Win32.
定义原型:
typedef UINT WPARAM;
18、
POSITION A value used to denote the position of an element in a collection; used by MFC collection classes.
定义原型:
// abstract iteration position
struct __POSITION { };
typedef __POSITION* POSITION;
19、
LPCRECT A 32-bit pointer to a constant (nonmodifiable) RECT structure.
定义原型:
typedef const RECT* LPCRECT; // pointer to read/only RECT
——————————————————————————————————————————————————————————————————————
刚接触MFC的人一看到里面各种各样的关键字肯定傻眼了.仿佛完全是另外一门语言了.因为MFC中把C++中的基本数据类型的关键字全改了一遍.这还不算变态,因为只是把小字改成大写.比较变态的是MFC里面是很多五花八门的类型实际上对应的是同一种基本类型.就算这样嘛多花点时间也还能熟悉.更加变态的是它还用自己的类型再定义其他类型.所以这些事都是用typedef这个宏干的.所以MFC里面到处是一堆堆的宏.
(实际上准确的说很多类型是Windows API的数据类型,只不过有时在MFC用起来也混淆了.也不用去区分到底是MFC的还是API的了,反正MFC说到底也只是通过OO手段对API的封装罢了)
闲话少说,先来看下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可加可不加)
int 4 (整形默认为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中与之对应的是
BOOL int
MFC中的指针类型
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 *BSTR 2.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表示是指向常量的指针.加W表示是宽字符指针
LPTSTR 如果在unicode中表示LPWSTR,否则表示LPSTR
LPCTSTR 如果在unicode中表示LPCWSTR,否则表示LPCSTR
//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
原文:http://blog.csdn.net/weiwenhp/article/details/6746719
————————————————————————————————————————————————————————
TO BE CONTINUED !
最后
以上就是威武长颈鹿为你收集整理的MFC常用各种数据类型的全部内容,希望文章能够帮你解决MFC常用各种数据类型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复