MFC二次拆分窗口

本人用的是VC6.0我要实现分割成2x2的窗口,直接一次分割成2X2的不管拖动哪个边界都影响到4个子窗口,所以我现在要进行二次拆分。先拆分成上下两部分,再分别拆分成左右两... 本人用的是VC6.0我要实现分割成2x2的窗口,直接一次分割成2X2的不管拖动哪个边界都影响到4个子窗口,所以我现在要进行二次拆分。先拆分成上下两部分,再分别拆分成左右两部分。我的方法是先m_wndSplitter.CreateStatic(this,2,1),之后没有创建视图,再进行m_upSplitter.CreateStatic(&m_wndSplitter,1,2...)然后CreateView。下面的也是。最终却只是显示下半部分的拆分窗口。

可以看到客户区确实被拆分成了4部分,但是上部分的显示有问题,他的客户区的大小为0.我用m_wndSplitter.GetPane(0,0)->GetClientRect(&rect);获得的rect大小是0.m_wndSplitter.GetPane(1,0)->GetClientRect(&rect);rect的大小也是0.我看到网上一个二次拆分的问题,http://smallprogrammer.blog.163.com/blog/static/131659928200941995247266/ 他的方法应该是有问题的。他能正常显示是因为他先把要拆分的前面的一个视图创建好了,加入他要拆分的是最左边的子窗口应该也是看不到的。
展开
 我来答
never715
2013-10-29 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:462万
展开全部

楼主可以这么做(就是方法比较戳):在第一次分割的时候先CreateView,指定Size,在第二次分割的时候先DeleteView,再CreateView,这样就不会有视图隐藏的情况了。

    if ( !m_split.CreateStatic(this, 1, 2) )
    {
        return FALSE;
    }
    if (!m_split.CreateView(0, 0, RUNTIME_CLASS(CMy003View), 
        CSize(200,100), pContext) ||
        !m_split.CreateView(0, 1, RUNTIME_CLASS(CMy003View), 
        CSize(200,100), pContext))
    {
        m_split.DestroyWindow();
        return FALSE;
    }

    m_split.DeleteView(0,0);
    if ( !m_splitLeft.CreateStatic(&m_split, 2, 1, WS_CHILD | WS_VISIBLE, 
        m_split.IdFromRowCol(0,0)) )
    {
        return FALSE;
    }
    if ( !m_splitLeft.CreateView(0, 0, RUNTIME_CLASS(CMy003View), 
        CSize(200,100), pContext) || 
        !m_splitLeft.CreateView(1, 0, RUNTIME_CLASS(CMy003View), 
        CSize(200,100), pContext) )
    {
        m_splitLeft.DestroyWindow();
        return FALSE;
    }

    return TRUE;

运行结果:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式