当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 如何让一个打开的文档成为活动文档

VC++
透明窗体的又一实现
橡皮区矩形 CRectTracker C# 实现
Visual Basic .NET 中多 Windows 窗体的同步
轻松实现类 MSDN 2002 界面(二)
轻松实现类 MSDN 2002 界面
数据库开发之窗体编程
一个打印报表的简单的类
SDK 程序使用SkinMagic工具包换皮肤
Windows SDK笔记(七):创建MDI窗口
Windows SDK笔记(六):使用对话框资源建立窗口
Windows SDK笔记(五):非模式对话框
Windows SDK笔记(四):模式对话框
也谈如何隐藏显示在任务栏中的对话框程序
一个托盘程序演示 -闹钟 Alert
think window procedure
再谈 CFileDialog 对话框的定制
获得 Win32 窗口句柄的更好的方法
个人考勤软件开发实例配套代码 2.1版(Update)
介绍一个操作DHTML表格的C++对象
Windows资源管理器Web视图界面

VC++ 中的 如何让一个打开的文档成为活动文档


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 41 ::
收藏到网摘: n/a

如何让一个打开的文档成为活动文档
赵湘宁
提出问题:

    有一个树型控件,在其TVITEM的用户部分存储着一个文档指针。当双击项目时,我想从打开的文档列表中激活文档。所以对于给定的文档类(CDocument)指针,如何在MDI应用中激活这个指针?

    在回答这个问题之前需要纠正的是:文档是不能被激活的,只有窗口能被激活。在提出的问题中隐含着这样一种假设,就是每一个文档只有一个视,MDI子框架与这个视关联。因此要激活文档也就是盯住几个指针。从文档可以获得它的视。

POSITION pos = pDoc->GetFirstViewPosition();
CView* pView = pDoc->GetNextView(pos);

pView是与文档关联的第一个视。这里假设这个文档有一个而且只有一个视。如果这个文档有一个以上关联的视(例如,在MDI应用中对相同的文档用户打开了两个窗口),你必须决定激活哪一个。最容易的办法是首先使用列表中第一个视。一旦你有了这个视,你必须获得包含它的MDI子框架。

CFrameWnd *pFrame = pView->GetParentFrame();

GetParentFrame得到给定窗口的第一个父框架—第一个父窗口是CFrameWnd。假设应用是MDI,那么包含子框架的视应该为CMDIChildWnd。一旦有了MDI子框架,你就可以调用pFrame->MDIActivate来激活它。另外,你还必须将指针强行转换为CMDIChildWnd。