不能用showwindow()函数
应该用ShowControlBar( CControlBar* pBar, BOOL bShow, BOOL bDelay )函数
具体用法请查看msdn

解决方案 »

  1.   

    对ToolBar的显示和隐藏不能简单地用ShowWindow来实现,因为他们的显示或隐藏将引起客户区大小的变化,因此CMDIFrameWnd有二个成员函数OnBarCheck和OnUpdateControlBarMenu来管理。具体操作如下:
    假设你增加了一个菜单项(ID_VIEW_YOURTOOLBAR)来显示和隐藏该工具条,你只要在CMainFrame的消息映射中增加如下代码
    BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    ...
    ON_COMMAND_EX( ID_VIEW_YOURTOOLBAR, OnBarCheck ) 
    ON_UPDATE_COMMAND_UI(ID_VIEW_YOURTOOLBAR, OnUpdateControlBarMenu)
    ...
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    就一切OK了。不用再编写其他代码。
      

  2.   


    void CMainFrame::OnViewSecond() 
    {
         ShowControlBar(&m_wndToolBar, !m_wndToolBar.IsWindowVisible(), FALSE);}void CMainFrame::OnUpdateViewSecond(CCmdUI* pCmdUI)
    {
    pCmdUI->SetCheck(m_wndToolBar.IsWindowVisible() );
    }
      

  3.   

    to: ysdesigned(清泉) 
        你的方法通过验证~~  多谢~~~~
      

  4.   

    to: A_Qiao()
        你说的我有点不明白。
     在这里,
        ON_COMMAND_EX( ID_VIEW_YOURTOOLBAR, OnBarCheck ) 
        ON_UPDATE_COMMAND_UI(ID_VIEW_YOURTOOLBAR, OnUpdateControlBarMenu)  填的是菜单项的ID,它是如何与工具栏联系起来的呢?  我试了你说的,加进去没有效果出来。
      

  5.   

    Sorry,忘了说了,菜单项和TOOLBAR采用相同的ID。
    你去看一下MFC的源码,他也是这样实现的。