michael5001 2014-09-14 13:04 采纳率: 0%
浏览 829

关于MFC静态切分窗口的问题

问题描述:
我新建了一个单文档工程,然后对窗口进行了静态切分,分成了两部分。我在左边的部分创建了两个按钮,想实现点击按钮在右边显示对应的视图。
我的代码如下:
一共有三个视图: View1, view2, view3;
首先我继承了OnCreateClient函数
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
CRect cr;
GetWindowRect(&cr);
if(m_wndSplitter.CreateStatic(this, 1, 2) == NULL)
{
return FALSE;
}
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView1), CSize(cr.Width()/4, cr.Height()), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView2), CSize(3*cr.Width()/4, cr.Height()), pContext);
return TRUE;
}
然后我在左边的视图上创建了两个Button: 希望能够控制右面的视图。
然后我自定义了消息。
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND(ID_FIRST_VIEW, OnSwitchToFirst) // ID_FIRST_VIEW 是自己定义的
On_COMMAND(ID_SECOND_VIEW, OnSwitchToSecond)
END_MESSAGE_MAP()

Button 在 CView1 类中添加了通知处理
void CMyTreeBar::OnButton1()
{
AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND, ID_FIRST_VIEW);

}
void CMyTreeBar::OnButton2()
{
AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND, ID_SECOND_VIEW);

}

然后在CMainFrame中添加了响应函数
void CMainFrame::OnSwitchToFirst()
{
m_wndSplitter.DeleteView(0, 1);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView2), CSize(0, 0), NULL);
m_wndSplitter.RecalcLayout();
}
void CMainFrame::OnSwitchToSecond()
{
m_wndSplitter.DeleteView(0, 1);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView2), CSize(0, 0), NULL);
m_wndSplitter.RecalcLayout();
}

但是运行结果 点击Button2, View2 消失了,但是没有吧 View3 显示出来。
点击Button1, View2 又显示出来了。 // 程序运行都是正确的
总之就是没有实现了切换。我是新手,很着急,请各位好心大哥给点建议和帮助。
急急急!!!!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:40
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮