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

扩展的分割窗口类

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.65/5 (14投票s)

2001年4月27日

1分钟阅读

viewsIcon

184115

downloadIcon

3901

一个扩展的分割窗口类,可以轻松创建“T”形布局

Sample Image - CExSplitter3Wnd.jpg

引言

我需要一个3窗口分割器,它将以“T”字形分割窗口,而不是3列或3行。这个CExSplitter3Wnd类允许您根据预定义的布局创建3窗口分割器。以下是定义的模式。请注意,您可以添加任何您想要的布局

请注意,PATTERN_5PATTERN_6是以通常的方式创建的。其他4种模式显示了扩展样式。

要创建这些模式中的一种

  1. 在您的SDI MainFrame中重写OnCreateClient函数。
  2. 构造一个新的CExSplitter3Wnd对象。
  3. 设置样式和初始视图大小。
  4. 使用以下参数调用设置模式函数
    • CWnd* pParent
    • SPLIT_PATTERN SplitPattern
    • CRuntimeClass* pFirstView
    • CRuntimeClass* pSecView
    • CRuntimeClass* pThirdView
    • CCreateContext* pContext

SPLIT_PATTERN是一个定义的enum

typedef enum 
{
    PATTERN_1 ,
    PATTERN_2 ,
    PATTERN_3 ,
    PATTERN_4 ,
    PATTERN_5 ,
    PATTERN_6 ,

}SPLIT_PATTERN;

示例

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    // TODO: Add your specialized code here and/or call the base class

    m_pTopWndSplitter  = new CExSplitter3Wnd;

    m_pTopWndSplitter->SetStyle(WS_CHILD | WS_VISIBLE | WS_BORDER);
    m_pTopWndSplitter->SetFirstViewSize(CSize(100,100));
    m_pTopWndSplitter->SetSecondViewSize(CSize(100,200));
    m_pTopWndSplitter->SetThirdViewSize(CSize(100,100));
    m_pTopWndSplitter->SetPattern(this,PATTERN_1,
        RUNTIME_CLASS(CTestSplitView),RUNTIME_CLASS(CSecView),
        RUNTIME_CLASS(CThirdView),pContext);
    return TRUE;
}

您可以通过调用其中一个尺寸函数来检索不同的视图大小。每个视图(第一个、第二个、第三个)都有自己的函数

void GetFirsWndDim(int* nCurrDim,int* nMinDim);
void GetSecWndDim(int* nCurrDim,int* nMinDim);
void GetThirdWndDim(int* nCurrDim,int* nMinDim);

许可证

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

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

© . All rights reserved.