MFC和Win32的比较

简介: <div class="exp-content-block" style="color:rgb(51,51,51); font-size:16px; line-height:28px; margin-top:40px"> <div class="exp-content-body exp-brief-step" style="text-align:justify; margin-top:5
摘要:关于MFC和Win32的比较的深入研究。

步骤/方法

  1.   从数据结构上比较
      MFC Object是相应C++类的实例,这些类是MFC或者程序员定义的;
      Windows Object是Windows系统的内部结构,通过一个句柄来引用;
      MFC给这些类定义了一个成员变量来保存MFC Object对应的Windows Object的句柄。对于设备描述表CDC类,将保存两个HDC句柄。
    MFC和Win32的比较
  2.   从层次上讲比较
      MFC Object是高层的,Windows Object是低层的;
      MFC Object封装了Windows Object的大部分或全部功能,MFC Object的使用者不需要直接应用Windows Object的HANDLE(句柄)使用Win32 API,代替它的是引用相应的MFC Object的成员函数。
    MFC和Win32的比较
  3.   从创建上比较
      MFC Object通过构造函数由程序直接创建;Windows Object由相应的SDK函数创建。
      MFC中,使用这些MFC Object,一般分两步:
      首先,创建一个MFC Object,或者在STACK中创建,或者在HEAP中创建,这时,MFC Object的句柄实例变量为空,或者说不是一个有效的句柄。
      然后,调用MFC Object的成员函数创建相应的Windows Object,MFC的句柄变量存储一个有效句柄。
    MFC和Win32的比较
  4.   从转换上比较
      可以从一个MFC Object得到对应的Windows Object的句柄;一般使用MFC Object的成员函数GetSafeHandle得到对应的句柄。
      可以从一个已存在的Windows Object创建一个对应的MFC Object; 一般使用MFC Object的成员函数Attach或者FromHandle来创建,前者得到一个永久性对象,后者得到的可能是一个临时对象。
  5.   从使用范围上比较
      MFC Object对系统的其他进程来说是不可见、不可用的;而Windows Object一旦创建,其句柄是整个Windows系统全局的。一些句柄可以被其他进程使用。典型地,一个进程可以获得另一进程的窗口句柄,并给该窗口发送消息。
      对同一个进程的线程来说,只可以使用本线程创建的MFC Object,不能使用其他线程的MFC Object。
    MFC和Win32的比较
  6. 6
      从销毁上比较
      MFC Object随着析构函数的调用而消失;但Windows Object必须由相应的Windows系统函数销毁。
      设备描述表CDC类的对象有所不同,它对应的HDC句柄对象可能不是被销毁,而是被释放
相关文章
|
Windows
win32&mfc————win32消息机制(二)
win32&mfc————win32消息机制(二)
164 0
|
Windows
win32&mfc————win32消息机制(一)
win32&mfc————win32消息机制(一)
144 0
|
编译器 C++
win32&mfc————win32菜单栏&库(一)
win32&mfc————win32菜单栏&库(一)
110 0
|
存储 Linux C++
win32&mfc————win32菜单栏&库(二)
win32&mfc————win32菜单栏&库(二)
99 0
|
存储 索引
|
开发工具 C++ API
win32中使用MFC类库
在Project->Setting->General 中选Use MFC in a Shared DLL或者 Use MFC in static Library并把project->Setting->C/C++ 中的Use runing-time library 由Single-Threaded改为...
1318 0
|
API 编译器 Linux
(七):处理MFC
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50703886 (一):简介 为了能够在一个Winelib应用中使用MFC,你需要首先使用Winelib重新编译MFC。
1239 0
|
数据库 编译器 数据库连接
在WIN32 DLL中使用MFC
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记   一、修改预编译头文件(stdafx.
1044 0
|
安全 容器 开发者
用MFC实现WebGUI--(CDHtmlDialog)
自从去年年底一次棘手的界面,开始研究用web做界面到现在大约1年,这一年间不是局限在实现层面,也并非一直研究这一个问题,有很多问题其实不是问题,只是自己没有想清楚或者思想没放开。对于一个界面开发人员,想必拉的对话框不少于100个,腻味不必说,光是对话框大小改变导致控件跟着变化都需要一番功夫,加上界面美观,界面的风格统一,界面的灵活多变......,头痛。
1462 0