65.9K
CodeProject 正在变化。 阅读更多。
Home

WTL 的简单选项卡式 MDI

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.93/5 (12投票s)

2001年12月23日

viewsIcon

79976

downloadIcon

1832

这是 WTL 的一个简单选项卡式 MDI。

Sample Image - wtlmditab.gif

引言

这个类在基于 WTL 的 MDI 应用程序中添加了一个简单的选项卡控件。它部分基于 Dundas Software 提供的免费 MFC 版本,该版本可在以下网址找到:

用法

首先,包含头文件并在主框架类中创建一个 CMDITabImpl 成员。

#include "atlmditab.h"

...
class CMainFrame : public ....
{
    CMDITabImpl<CMainFrame> m_TabbedMDI;

然后在主框架的 OnCreate(..) 函数中附加到控件

LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, 
    LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
    ....
    CreateMDIClient();
    m_CmdBar.SetMDIClient(m_hWndMDIClient);
    m_TabbedMDI.Attach(this);
    ...
}

然后你必须在主框架中添加一个 UpdateLayout() 函数,以正确放置选项卡控件。如果有人找到一个 WTL 解决方案,而不需要这段额外的代码,请告诉我。

void UpdateLayout(BOOL bResizeBars = TRUE)
{
    RECT rect;
    GetClientRect(&rect);
    
    // position bars and offset their dimensions
    UpdateBarsPosition(rect, bResizeBars);
        
    m_TabbedMDI.UpdateTabLayout(m_hWndClient, rect);
}

限制

这个类是为学习 WTL 而编写的,所以实现中肯定有很多错误。并且一些功能尚未实现,例如图标支持和上下文菜单。等我有更多时间时,我会继续改进它们。干杯!

历史

  • 2001年12月23日:初始版本

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.