MFC常用数据类型:


http://blog.csdn.net/dengrk/article/details/1947345

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言里定,返回值为truefalse(上就上10)   
    
BOOL
应该MFCSDK里定返回.   
它的定义应该是: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

 问题:1.为什么微软不用STL中Iterator的方法来写这个POSITION类?   
  2.既然不用Iterator,那么用void   *类型也是可以,为什么不用?   
  3.c++怎么来看待空结构,有什么具体的用法和技巧?

答: 1.因为历史原因,mfc的开发人员并不知道如何实现数据结构和算法分离的技术,所以没有使用Iterator   
  2.所以在当时的情况下,也只有尽可能的使用强类型POSTION来代替void   *

在MFC4.0以前的版本中,POSITION实际上就是一个void指针。在5.0中的定义大概是:   
  struct   __POSITION   {   int   unused;   }   ;   
  typedef   __POSITION   *   POSITION   ;   
  6.0中才变为:   
  struct   __POSITION   {     }   ;   
  typedef   __POSITION   *   POSITION   ;   
  虽然结构内没有成员变量,但指向结构的指针仍需要4字节----32位机中天下的指针都是这个长度滴!   
    
  这样做的目的仅是为了类型安全。对于POSITION参数,使用者很容易传错,特别是当表中元素是void   *时,此时很有可能在需要元素的地方传入POSITION,而在需要POSITION的地方传入void   *。当做上面的定义中,编译器就可以检查出这种错误。   
    
  在MFC内部,POSITION实际上指向CNode类型。

MFC一直就没打算封装数据结构与算法。它只关心商业上的最有可能应用到的东西。   
  POSITION其实也有某些迭代器的特征,只是没有使用它的适合多个容器的通用算法。   
  STL对MFC来说是绝对的晚辈,就不要指望它继承STL的一切思想了。   
  另外,MFC/STL中任何一门搞精都很了不起了,都是大牛牛。横向比较没得多大意思,存在就是合理的。今天知道了STL就大贬MFC,明天知道了C#就抵制C++,后果么,俺才浅识陋,实在想不出来。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值