代码如下:
m_wndOutputBar.SetCurActiveWindow(0);
if(!m_wndOutputBar.IsWindowVisible())
{
m_wndOutputBar.ShowWindow(SW_SHOWNORMAL);
}
else
{
m_wndOutputBar.ShowWindow(SW_HIDE);
}
RecalcLayout();
问题:这个m_wndOutputBar继承自CControlBar,在CMainFrame中创建。我在执行这段代码的时候,这个m_wndOutputBar窗口并不出来,但是它的显示状态已经是显示了,在下一次软件启动的时候,这个窗体才会显示出来(我在注册表中记录了窗体的显示状态)。不知道为什么?
另外,代码本来写在View中,但是没有运行,就放到了CMainFrame中,仍旧不运行。
同时另一个函数执行同样的操作,基类为CControlBar,运行的很好。

解决方案 »

  1.   

    用GetWindowLong取窗口style看看,如果不成,多半是你什么窗口把Bar窗口盖住了吧?
      

  2.   

    用ShowControlBar方法来控制CControlBar,ShowWindow不会更新Frame
      

  3.   

    不错,直接换成这个就可以了。
    m_wndOutputBar.SetCurActiveWindow(0);
    if(!m_wndOutputBar.IsWindowVisible())
    {
    //m_wndOutputBar.ShowWindow(SW_SHOWNORMAL);
    ShowControlBar(&m_wndOutputBar,TRUE,FALSE);
    }
    else
    {
    //m_wndOutputBar.ShowWindow(SW_HIDE);
    ShowControlBar(&m_wndOutputBar,FALSE,FALSE);
    }
    //RecalcLayout();//这个也不用要了