WEB开发网
开发学院软件开发VC MFC教程(2)-- MFC和Win32 阅读

MFC教程(2)-- MFC和Win32

 2010-03-25 20:33:55 来源:WEB开发网   
核心提示:从使用范围上比较MFC Object对系统的其他进程来说是不可见、不可用的;而Windows Object一旦创建,其句柄是整个Windows系统全局的,MFC教程(2)-- MFC和Win32(2),一些句柄可以被其他进程使用,典型地,因为MFC是一个建立在SDK API基础上的编程框架,对程序员来说所不同的是:一般

从使用范围上比较

MFC Object对系统的其他进程来说是不可见、不可用的;而Windows Object一旦创建,其句柄是整个Windows系统全局的。一些句柄可以被其他进程使用。典型地,一个进程可以获得另一进程的窗口句柄,并给该窗口发送消息。

对同一个进程的线程来说,只可以使用本线程创建的MFC Object,不能使用其他线程的MFC Object。

从销毁上比较

MFC Object随着析构函数的调用而消失;但Windows Object必须由相应的Windows系统函数销毁。

设备描述表CDC类的对象有所不同,它对应的HDC句柄对象可能不是被销毁,而是被释放。

当然,可以在MFC Object的析构函数中完成Windows Object的销毁,MFC Object的GDI类等就是如此实现的,但是,应该看到:两者的销毁是不同的。

每类Windows Object都有对应的MFC Object,下面用表格的形式列出它们之间的对应关系,如表2-1所示:

表2-1 MFC Object和Windows Object的对应关系

描述

Windows句柄

MFC Object

窗口

HWND

CWnd and CWnd-derived classes

设备上下文

HDC

CDC and CDC-derived classes

菜单

HMENU

CMenu

HPEN

CGdiObject类,CPen和CPen-derived classes

刷子

HBRUSH

CGdiObject类,CBrush和CBrush-derived classes

字体

HFONT

CGdiObject类,CFont和CFont-derived classes

位图

HBITMAP

CGdiObject类,CBitmap和CBitmap-derived classes

调色板

HPALETTE

CGdiObject类,CPalette和CPalette-derived classes

区域

HRGN

CGdiObject类,CRgn和CRgn-derived classes

图像列表

HimageLIST

CimageList和CimageList-derived classes

套接字

SOCKET

CSocket,CAsynSocket及其派生类

表2-1中的OBJECT分以下几类:

Windows对象,

设备上下文对象,

GDI对象(BITMAP,BRUSH,FONT,PALETTE,PEN,RGN),

菜单,

图像列表,

网络套接字接口。

从广义上来看,文档对象和文件可以看作一对MFC Object和Windows Object,分别用CDocument类和文件句柄描述。

后续几节分别对前四类作一个简明扼要的论述。

Windows Object

用SDK的Win32 API编写各种Windows应用程序,有其共同的规律:首先是编写WinMain函数,编写处理消息和事件的窗口过程WndProc,在WinMain里头注册窗口(Register Window),创建窗口,然后开始应用程序的消息循环。

MFC应用程序也不例外,因为MFC是一个建立在SDK API基础上的编程框架。对程序员来说所不同的是:一般情况下,MFC框架自动完成了Windows登记、创建等工作。

Tags:MFC 教程 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接