您现在的位置:首页 > 学术研究 > 读书笔记 > MFC结构一览
MFC结构一览
[发布时间:2003-07-20  阅读次数: 4543]

为每种类型的文档从CDocument中派生一个类。

添加保存在文档数据的成员变量。

为阅读和修改文档数据提供成员函数,文档的视图是这些成员函数最重要的用户。

在文档类中覆盖CObject::Serialize成员函数,从磁盘读取文档数据或将其写入磁盘。CDocument还支持通过邮件发送文档,如果存在邮件支持(MAPI)的话。

CDocument::IsModified:标识文档从最近一次保存以来是否被修改过。

CDocument::UpdateAllViews:通知所有视图文档已被修改的消息。

CWnd类:CWnd类提供了微软基础类库中所有窗口类的基本功能。CWnd对象与Windows的窗口不同,但是两者有紧密联系。CWnd对象是由CWnd的构造函数和析构函数创建或销毁的。另一方面,Windows的窗口是Windows的一种内部数据结构,它是由CWnd的Create成员函数创建的,而由CWnd的虚拟析构函数销毁。DestroyWindow函数销毁Windows的窗口,但是不销毁对象。CWnd类和消息映射机制隐藏了WndProc函数。接收到的Windows通知消息通过消息映射被自动发送到适当的CWnd OnMessage成员函数。你可以在派生类中重载OnMessage成员函数以处理成员的特定消息。CWnd类同时还使你能够为应用程序创建Windows的子窗口。先从CWnd继承一个类,然后在派生类中加入成员变量以保存与你的应用程序有关的数据。在派生类中实现消息处理成员函数和消息映射,以指定当消息被发送到窗口时应该如何动作。你可以经过两个步骤来创建一个子窗口。首先,调用构造函数CWnd以创建一个CWnd对象,然后调用Create成员函数以创建子窗口并将它连接到CWnd对象。当用户关闭你的子窗口时,应销毁CWnd对象,或者调用DestroyWindow成员函数以清除窗口并销毁它的数据结构。在微软基础类库中,从CWnd派生了许多其它类以提供特定的窗口类型。这些类中有许多,包括CFrameWnd,CMDIFrameWnd,CMDIChildWnd,CView和CDialog,被用来进一步派生。从CWnd派生的控件类,如CButton,可以被直接使用,也可以被进一步派生出其它类来。

CWnd::m_hWnd:指明与这个CWnd对象相关联的HWND句柄。

CWnd::Create:创建并初始化与CWnd对象相关联的子窗口。

CWnd::PreCreateWindow:在与CWnd对象相关联的窗口被创建之前调用。

CWnd::IsWindowEnabled:确定一个窗口是否允许鼠标和键盘输入。

CWnd::EnableWindow:允许或禁止鼠标和键盘输入。

CWnd::SetWindowPos:改变子窗口、弹出窗口和顶层窗口的大小、位置以及顺序。

CWnd::GetDlgItem:获得指定的对话框中具有指定ID的控件。

CWnd::UpdateData:初始化对话框或获得对话框中的数据。

CWnd::GetWindowRect:获得CWnd的屏幕坐标。

CWnd::GetDC:获得客户区的设备环境。

CWnd::RedrawWindow:更新客户区中的指定矩形或区域。

CWnd::UpdateWindow:更新客户区。

CWnd::Invalidate:使整个客户区无效。

CWnd::ShowWindow:显示或隐藏窗口。

CWnd::ClientToScreen:将给定点或显示器上矩形的客户区坐标转换为屏幕坐标。

CWnd::ScreenToClient:将给定点或显示器上矩形的屏幕坐标转换为客户坐标。

CWnd::SetWindowText:将窗口的文本或标题文字(如果有)设为指定的文本。

CWnd::SetFont:设置当前字体。

CWnd::GetDlgItemInt:将给定对话框中控件的文本转换为整数。

CWnd::SetTimer:安装一个系统定时器,当它被激活时,发送一个WM_TIMER消息。

CWnd::KillTimer:销毁一个系统定时器。

CWnd::FlashWindow:使窗口闪烁一次。

CWnd::MessageBox:创建并显示一个窗口,其中包含了应用程序提供的消息和标题。

……………一大堆消息响应函数略去。

CView类:为用户定义的视图类提供了基本的功能。视图被连接到文档上,用作文档和用户之间的媒介:视图在屏幕或打印机上显示文档的图像,并将用户的输入解释为对文档的操作。视图是框架窗口的子窗口。可能会有多个视图共用一个框架窗口,就像在分隔窗口中那样。视图类、框架窗口类和文档类之间的联系通过CDocTemplate类来建立。当用户打开一个新窗口或将现有窗口分隔为多个时,框架会创建一个新视图并将它连接到文档对象上。一个视图只能被连接到一个文档,但是一个文档可以有多个视图与之相连接,例如,在分隔窗口或多文档界面(MDI)应用程序的多重子窗口中显示的文档就是如此。对于给定的文档类型,应用程序可以支持不同类型的视图;例如,一个字处理程序可能既要提供文档的完整文本视图,又要提供只显示每节标题的大纲视图。这些不同的视图类型可以放在不同的框架窗口中,如果你使用的是分隔窗口,你也可以把它们放在同一框架窗口的不同板块中。视图可以响应几种类型的输入,例如键盘输入,鼠标输入或拖放输入,还有菜单、工具条和滚动条产生的命令输入。视图接收框架窗口发送给它的命令,如果视图不接受一个给定的命令,它就将这个命令发送给相连接的文档。与所有的命令目标一样,视图类通过消息映射处理消息。当文档的数据发生变化时,视图类响应这种变化,通常调用文档的CDocument::UpdateAllViews函数,通知所有其它的视图调用OnUpdate函数。OnUpdate数的缺省实现使视图的整个用户区域无效。你可以重载这个函数,只使视图中与文档的变化部分相对应的区域无效。如果要使用CView,应当从它派生一个类,并实现它的OnDraw函数以在屏幕上显示。你还可以利用OnDraw函数来进行打印和打印预览。框架将处理打印循环以实现对文档的打印和打印预览。通过CWnd::OnHScroll和CWnd::OnVScroll成员函数来处理滚动条消息。你可以在这些函数中实现对滚动消息的处理,你也可以利用CView的派生类SCrollView来处理滚动。除了CScrollView以外,微软基础类库还提供了其它的CView派生类:

首页上一页下一页尾页当前为2/3页