请问如何动态隐藏状态栏上的进度条并清空以备下次使用?

解决方案 »

  1.   

    1、向String Table中添加一个字符串,不妨命名为IDS_PROGRESS
       将其值设为一长串的空格。
    2、在MainFrm.cpp文件中,做以下变换
    static UINT indicators[] =
    {
    ID_SEPARATOR,           // status line indicator
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
    ID_PROGRESS
    };
    3、向CMainFrame类中添加以下两个成员:
       CProgressCtrl m_Progress;
       BOOL m_bCreated;
    4、在CMainFrame类的构造函数中,添加
       m_bCreated = FALSE;
    5、向CMainFrame增加一个菜单响应函数(菜单项ID为ID_TEST),函数名为OnTest,函数内容如下:
    void CMainFrame::OnTest() 
    {
    RECT MyRect;
    m_wndStatusBar.GetItemRect(4, &MyRect);   if (m_bCreated == FALSE)
    {
    m_Progress.Create(
                          WS_VISIBLE|WS_CHILD, 
                          MyRect, &m_wndStatusBar, 1); 

    m_Progress.SetRange(0,200); 
    m_Progress.SetStep(1); 
    m_bCreated = TRUE;
    } for (int I = 0; I < 200; I++)
    {
                Sleep(20);
       m_Progress.StepIt();
    }
    }
    6、向CMainFrame类中增加WM_SIZE消息处理函数,内容如下:
    void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    CFrameWnd::OnSize(nType, cx, cy); if (m_bCreated)
    {
    RECT rc;
    m_wndStatusBar.GetItemRect(4, &rc);
    m_Progress.SetWindowPos(
    &wndTop, rc.left, rc.top, 
    rc.right - rc.left,
    rc.bottom - rc.top, 0); 
    }
    }
    试一下吧
      

  2.   

    我的Mail:[email protected], 需要范例,来信告之。
      

  3.   


    到以下站点下载一个例程,希望对你有帮助:http://zhiwen.myrice.com/source.htm
      

  4.   

    在上面的例程里,重写MainFrame的Timer如下:void CMainFrame::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    m_prgctl.StepIt();
    //
    int iMax,iMin,iPos;
    m_prgctl.GetRange(iMin,iMax);
    iPos=m_prgctl.GetPos();
    if(iPos>=iMax)
    {
       m_prgctl.SetPos(iMin);//清空
       m_prgctl.ShowWindow(SW_HIDE);//隐藏
       Sleep(10000);
       m_prgctl.ShowWindow(SW_SHOW);//显示
    }
    CFrameWnd::OnTimer(nIDEvent);
    }
      

  5.   

    GetDlgItem(IDC_XXX)->ShowWindow(SW_HIDE);
      

  6.   

    GetDlgItem(IDC_XXX)->ShowWindow(SW_HIDE);
      

  7.   

    可以设置一个变量m_isHide;//其值可以通过菜单选项等来进行设置
    并设置它,
    if(m_isHide)
    {
    GetDlgItem(IDC_XXX)->ShowWindow(SW_HIDE);
    }
    else
    {
       GetDlgItem(IDC_XXX)->ShowWindow(SW_NORMAL);
    }