关于我们 | 联系我们

qy千亿·体育|登录平台

当前位置:主页 > 新闻资讯 > 行业新闻 >

MFC和Win32技术应用分析

本文摘要:MFCObject和WindowsObject的关系MFC中最重要的PCB是对Win32API的PCB,因此,解读WindowsObject和MFCObject(C++对象,一个C++类的实例)之间的关系是解读MFC的关键之一。

千赢国际官网首页入口

MFCObject和WindowsObject的关系MFC中最重要的PCB是对Win32API的PCB,因此,解读WindowsObject和MFCObject(C++对象,一个C++类的实例)之间的关系是解读MFC的关键之一。所谓WindowsObject(Windows对象)是Win32下用句柄回应的Windows操作系统对象;所谓MFCObject(MFC对象)是C++对象,是一个C++类的实例,这里(本书范围内)MFCObject是有特定含义的,指PCBWindowsObject的C++Object,并非指给定的C++Object。

MFCObject和WindowsObject是不一样的,但两者紧密联系。以窗口对象为事例:一个MFC窗口对象是一个C++CWnd类(或派生类)的实例,是程序必要创立的。在程序执行中它随着窗口类构造函数的调用而分解,随着析可分函数的调用而消失。

而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个窗口句柄标识,Windows系统创立它并给它分配系统资源。Windows窗口在MFC窗口对象创立之后,由CWnd类的Create成员函数创立,窗口句柄留存在窗口对象的m_hWnd成员变量中。Windows窗口可以被一个程序封存,也可以被用户的动作封存。MFC窗口对象和Windows窗口对象的关系如图2-1右图。

其他的WindowsObject和对应的MFCObject也有类似于的关系。下面,对MFCObject和WindowsObject作一个较为。

有些论点对设备描述表格(MFC类是CDC,句柄是HDC)有可能不限于,但明确牵涉到到时会认为。从数据结构上较为MFCObject是适当C++类的实例,这些类是MFC或者程序员定义的;WindowsObject是Windows系统的内部结构,通过一个句柄来提到;MFC给这些类定义了一个成员变量来留存MFCObject对应的WindowsObject的句柄。

qy千亿体育登录平台

对于设备描述表格CDC类,将留存两个HDC句柄。从层次上谈较为MFCObject是高层的,WindowsObject是低层的;MFCObjectPCB了WindowsObject的大部分或全部功能,MFCObject的使用者不必须必要应用于WindowsObject的HANDLE(句柄)用于Win32API,替换它的是提到适当的MFCObject的成员函数。

从创立上较为MFCObject通过构造函数由程序必要创立;WindowsObject由适当的SDK函数创立。MFC中,用于这些MFCObject,一般分两步:首先,创立一个MFCObject,或者在STACK中创立,或者在HEAP中创立,这时,MFCObject的句柄实例变量为空,或者说不是一个有效地的句柄。

qy千亿体育登录平台

然后,调用MFCObject的成员函数创立适当的WindowsObject,MFC的句柄变量存储一个有效地句柄。CDC(设备描述表类)的创立有所不同,在后面的2.3节会明确解释CDC及其派生类的创立和用于。

当然,可以在MFCObject的构造函数中创立适当的Windows对象,MFC的GDI类就是如此构建的,但从实质上谈,MFCObject的创立和WindowsObject的创立是两回事。从切换上较为可以从一个MFCObject获得对应的WindowsObject的句柄;一般用于MFCObject的成员函数GetSafeHandle获得对应的句柄。可以从一个已不存在的WindowsObject创立一个对应的MFCObject;一般用于MFCObject的成员函数Attach或者FromHandle来创立,前者获得一个永久性对象,后者获得的有可能是一个临时对象。

从用于范围上较为MFCObject对系统的其他进程来说是不可见、不能用的;而WindowsObject一旦创立,其句柄是整个Windows系统全局的。一些句柄可以被其他进程用于。典型地,一个进程可以取得另一进程的窗口句柄,并给该窗口发送到消息。对同一个进程的线程来说,只可以用于本线程创立的MFCObject,无法用于其他线程的MFCObject。

从封存上较为MFCObject随着析可分函数的调用而消失;但WindowsObject必需由适当的Windows系统函数封存。设备描述表格CDC类的对象有所不同,它对应的HDC句柄对象有可能不是被封存,而是被获释。当然,可以在MFCObject的析构函数中已完成WindowsObject的封存,MFCObject的GDI类等就是如此构建的,但是,应当看见:两者的封存是有所不同的。


本文关键词:MFC,和,Win32,技术应用,分析,MFCObject,和,千赢国际官网首页入口

本文来源:qy千亿体育登录平台-www.hunbon.com

Copyright © 2000-2022 www.hunbon.com. qy千亿体育登录平台科技 版权所有 备案号:ICP备55295691号-1