MFC 的多视窗设计

本文介绍了如何在MFC应用程序中实现多视窗设计,通过修改CMainFrame和CxxxApp类,创建CSplitterWnd实现两个视图的分割。详细步骤包括在CMainFrame的OnCreateClient()函数中创建静态分割窗口,以及在CxxxApp的InitInstance()中修改文档模板,避免重复添加视图导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在MFC 的视窗设计中,我一般喜欢选单文档,但缺省是一个视图。我需要2个或多个视窗。怎么设计呢?


需要修改2个类就可以了, CMainFrame,CxxxApp:


在CMainFrame中,


添加分割 CSplitterWnd

CSplitterWnd m_spliter1;               //原版的CSplitterWnd

然后重载CMainFrame类的OnCreateClient()函数,在该函数中添加如下代码:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    CRect rect;
    GetClientRect( &rect );
    CSize size = rect.Size();
    size.cx =size.cx-300;        // Initial column size
    //size.cy /= 2;        // Initial row size

    // 1 - Create first static splitter
    if( !m_wndSplitter1.CreateStatic( this, 1, 2 ) )    // 1 row, 2 cols
    {
        TRACE0( "Failed to create first static splitter\n" );
        return FALSE;
    }

    // 2 - Create left column view
    
    if( !m_wndSplitter1.CreateView( 0, 0,                // row 0, col 0
                            RUNTIME_CLASS( Crtc5View2 ),
                            //RUNTIME_CLASS( CLaserXyzView ),
                            size, pContext ) )
    {
        TRACE0( "Failed to create left view\n" );
        return FALSE;
&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值