ToolBar隐藏后再显示得不到原来位置,movewindow总是得不到正确的结果?

nightlocus 2007-12-21 01:13:36
单文档程序,当toolbar在非停靠的时候,出现在view中,这个时候隐藏,再显示的时候总是在停靠区域.
现在想把他显示在原来隐藏的地方.可总还是显示在停靠的区域? 我使用了movewindow和setwindowpos却还是得不到正确的区域?

void CMainFrame::OnViewNew()
{
// TODO: Add your command handler code here
if(m_myToolBar.IsWindowVisible())
{
m_myToolBar.GetWindowRect(&rect);
this->ScreenToClient(rect);

m_myToolBar.ShowWindow(SW_HIDE);
}
else
{
m_myToolBar.ShowWindow(SW_SHOW);
m_myToolBar.MoveWindow(rect,true);
}
RecalcLayout();
DockControlBar(&m_myToolBar);
}
...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightlocus 2007-12-21
  • 打赏
  • 举报
回复
自己解决了
原来toolbar是停留在一个隐藏的frame上面,隐藏后还是在原来的位置,只要把他所依附的frame显示就可以了
void CMainFrame::OnViewNew()
{
// TODO: Add your command handler code here
if(m_myToolBar.IsWindowVisible())
{
m_myToolBar.ShowWindow(SW_HIDE);
if(m_myToolBar.IsFloating())
{
m_myToolBar.GetParentFrame()->ShowWindow(SW_HIDE);
}
else
{
RecalcLayout();
DockControlBar(&m_myToolBar);
}
}
else
{
m_myToolBar.ShowWindow(SW_SHOW);
if(m_myToolBar.IsFloating())
{
m_myToolBar.GetParentFrame()->ShowWindow(SW_SHOW);
}
else
{
RecalcLayout();
DockControlBar(&m_myToolBar);
}
}
}
nightlocus 2007-12-21
  • 打赏
  • 举报
回复
当toolbar没有停靠的时候,是处于view上的,得到的rect是客户区域的坐标.
而用这个坐标去移动控制窗口的显示的时候就只能显示在frame上,而不是在原来view的位置.
谁知道,帮帮忙,实在是想不明白了!
nightlocus 2007-12-21
  • 打赏
  • 举报
回复

m_myToolBar.getparent()-> showwindow(...);
就显示不出来toolbar了
总觉得奇怪,显示的toolbar位置总是在frame上面,而不能到达view上面.
zhoujianhei 2007-12-21
  • 打赏
  • 举报
回复
试试
m_myToolBar.getparent()->showwindow(...);
nightlocus 2007-12-21
  • 打赏
  • 举报
回复
DockControlBar(&m_myToolBar);
是不能去的.
Slin000 2007-12-21
  • 打赏
  • 举报
回复
把你的 DockControlBar(&m_myToolBar); 去掉就可以了
事实上,只要一句话:


void CMainFrame::OnViewNew()
{
m_myToolBar.ShowWindow(m_myToolBar.IsWindowVisible() ? SW_HIDE : SW_SHOW);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧