在现代应用程序中,用户界面的直观性和易用性是至关重要的。多文档标签界面(MDI)提供了一种有效的方式来组织和管理多个文档窗口。本文将介绍如何使用WTL(Windows Template Library)创建一个具有多文档标签功能的应用程序。
本示例部分基于Dundas Software提供的免费MFC版本。它实现了一个多文档标签界面,允许用户在一个主窗口中打开多个文档,并通过标签来切换它们。
首先,需要包含头文件并在主框架类中创建一个CMDITabImpl成员。
#include "atlmditab.h"
class CMainFrame : public ... {
CMDITabImpl m_TabbedMDI;
};
然后在主框架的OnCreate函数中附加到控件:
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
CreateMDIClient();
m_CmdBar.SetMDIClient(m_hWndMDIClient);
m_TabbedMDI.Attach(this);
...
}
接下来,必须在主框架中添加一个UpdateLayout函数,以正确放置标签控件:
void UpdateLayout(BOOL bResizeBars = TRUE) {
RECT rect;
GetClientRect(▭);
// position bars and offset their dimensions
UpdateBarsPosition(rect, bResizeBars);
m_TabbedMDI.UpdateTabLayout(m_hWndClient, rect);
}
这个类是为了学习WTL而编写的,因此实现中可能存在许多错误。一些特性尚未实现,比如图标支持和上下文菜单。当有更多的时间时,将着手解决这些问题。