mfc/Ribbon的停靠窗关闭后再也找不到的问题解决方法



mfc基于office,Ribbon的停靠窗关闭后再也找不到的问题

网上看到的几种方法:
1去掉停靠窗口右上角关闭按钮,

m_ourPane.SetControlBarStyle(~AFX_CBRS_CLOSE)
去掉停靠窗的关闭按钮后,看似解决了问题,但是在调整停靠窗布局的时候,如果将两个停靠窗放到一起,关闭按钮又显示出来了,一旦关掉又没法弄了,无语啊



2消除停靠位置,存储记忆功能

在CMainFrame中,CreateDocablePane之前,调用CMainFrame::EnableLoadDockState(FALSE);
弊端:仍不能立即打开关掉的停靠窗;可以在下次打开的时候显示停靠窗,但是位置已经不是你调整好的了

我使用的方法:动态的控制停靠窗的显示隐藏,完美解决了这个问题,效果类似于word上的文档结构图
m_MyDockPane.ShowPane(FALSE, FALSE, FALSE);
和m_MyDockPane.ShowPane(TRUE, TRUE, TRUE);
步骤1,建立好停靠窗,在CMainFrame类中定义对象CDock...  m_MyDockablePane
步骤2,Ribbon上添加一个checkBox
步骤3,checkBox添加Command事件和UPDATE_COMMAND_UI事件
步骤4,写入代码
//checkBox的COMMAND事件
void CMainFrame::OnChkDockfind()
{
 if (m_MyDockablePane.IsWindowVisible())
 {
  m_MyDockablePane.ShowPane(FALSE, FALSE, FALSE);
 }
 else
 { 
  m_MyDockablePane.ShowPane(TRUE, TRUE, TRUE);  
 }
}
//checkBox的UPDATE_COMMAND_UI事件
if (m_MyDockablePane.IsWindowVisible())
 {
  pCmdUI->SetCheck(TRUE);
 }
 else
 {
  pCmdUI->SetCheck(FALSE);
 }

如果还有疑问可以联系我:微信号13524191382











猜你喜欢

转载自blog.csdn.net/b695886658/article/details/79498556
今日推荐