BCGControlBar使用(九)

状态栏的使用

StatusBarDemo

【原创】BCGControlBar使用(九)



const int nStatusIcon = 0;
const int nStatusInfo = 1;
const int nStatusProgress = 2;
const int nStatusLabel = 3;
const int nStatusAnimation = 4;

 

static UINT indicators[] =
{
 ID_INDICATOR_ICON,  // status icon
 ID_SEPARATOR,           // status line indicator
 ID_INDICATOR_PROGRESS, // progress bar
 ID_INDICATOR_LABEL,  // text label
 ID_INDICATOR_ANIMATION, // animation pane
 ID_INDICATOR_CAPS,
 ID_INDICATOR_NUM,
 ID_INDICATOR_SCRL,
};

 

CMainFrame::OnCreate

 if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,
    sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status bar\n");
  return -1;      // fail to create
 }

 m_wndStatusBar.SetPaneStyle (nStatusIcon, SBPS_NOBORDERS);
 m_wndStatusBar.SetPaneStyle (nStatusAnimation, SBPS_NOBORDERS);
 m_wndStatusBar.SetPaneStyle (nStatusInfo, SBPS_STRETCH | SBPS_NOBORDERS);
 m_wndStatusBar.SetPaneWidth (nStatusProgress, 80);
 m_wndStatusBar.EnablePaneDoubleClick ();

 

 

 CBCGPStatusBar& GetStatusBar () const
 {
  return ((CMainFrame*) AfxGetMainWnd ())->GetStatusBar ();
 }

 

void CStatusBarDemoView::OnInitialUpdate()
{
 CFormView::OnInitialUpdate();

 m_wndTextColor.EnableAutomaticButton (_T("Default"), globalData.clrBtnText);
 m_wndTextColor.EnableOtherButton (_T("Other..."));
 m_wndTextColor.SetColor ((COLORREF)-1);

 m_wndBackColor.EnableAutomaticButton (_T("Default"), globalData.clrBtnFace);
 m_wndBackColor.EnableOtherButton (_T("Other..."));
 m_wndBackColor.SetColor ((COLORREF)-1);

 if (m_imlStatusAnimation.GetSafeHandle () == NULL)//m_imlStatusAnimation为CImageList
 {
  m_imlStatusAnimation.Create (IDB_ANIMATION, 16, 0, RGB (255, 0, 255));
 }

 const UINT uiLoadImageFlags = LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS;

 if (m_bmpIcon1.GetSafeHandle () == NULL)
 {
  HBITMAP hbmp = (HBITMAP) ::LoadImage (
   AfxGetResourceHandle (),
   MAKEINTRESOURCE(IDB_ICON1),
   IMAGE_BITMAP,
   0, 0,
   uiLoadImageFlags);
  m_bmpIcon1.Attach (hbmp);
 }

 if (m_bmpIcon2.GetSafeHandle () == NULL)
 {
  HBITMAP hbmp = (HBITMAP) ::LoadImage (
   AfxGetResourceHandle (),
   MAKEINTRESOURCE(IDB_ICON2),
   IMAGE_BITMAP,
   0, 0,
   uiLoadImageFlags);
  m_bmpIcon2.Attach (hbmp);
 }

 GetStatusBar ().SetPaneIcon (nStatusIcon, m_bmpIcon1);
 GetStatusBar ().SetTipText (nStatusIcon, _T("This is a tooltip"));//图标的提示
}

void CStatusBarDemoView::OnStartProgress()
{
 if (m_bInProgress)
 {
  KillTimer (ID_PROGRESS_TIMER);
  m_wndStartProgress.SetWindowText (_T("Start Progress"));
  GetStatusBar ().EnablePaneProgressBar (nStatusProgress, -1);

  m_bInProgress = FALSE;

  return;
 }

 GetStatusBar ().EnablePaneProgressBar (nStatusProgress, PROGRESS_MAX);

 m_nProgressCurr = 0;
 m_bInProgress = TRUE;

 SetTimer (ID_PROGRESS_TIMER, 200, NULL);
 m_wndStartProgress.SetWindowText (_T("Stop Progress"));
}

void CStatusBarDemoView::OnStartAnimation()
{
 if (m_bInAnimation)
 {
  m_wndStartAnimation.SetWindowText (_T("Start Animation"));
  GetStatusBar ().SetPaneAnimation (nStatusAnimation, NULL);
  m_bInAnimation = FALSE;
  return;
 }

 GetStatusBar ().SetPaneAnimation (nStatusAnimation, m_imlStatusAnimation);
 GetStatusBar ().SetPaneText (nStatusAnimation, _T(""));
 GetStatusBar ().SetPaneWidth (nStatusAnimation, 16);

 m_wndStartAnimation.SetWindowText (_T("Stop Animation"));
 m_bInAnimation = TRUE;
}

void CStatusBarDemoView::OnIcon()
{
 UpdateData ();
 GetStatusBar ().SetPaneIcon (nStatusIcon, m_nIcon == 0 ? m_bmpIcon1 : m_bmpIcon2);
}

void CStatusBarDemoView::OnBackColor()
{
 GetStatusBar ().SetPaneBackgroundColor (nStatusLabel, m_wndBackColor.GetColor ());
}

void CStatusBarDemoView::OnTextColor()
{
 GetStatusBar ().SetPaneTextColor (nStatusLabel, m_wndTextColor.GetColor ());
}

void CStatusBarDemoView::OnIndicatorLabel()

//ID_INDICATOR_LABEL("Simple text")的响应函数
{
 MessageBox (_T("Status bar pane double-click..."));
}

void CStatusBarDemoView::OnTimer(UINT_PTR nIDEvent)
{
 if (nIDEvent == ID_PROGRESS_TIMER)
 {
  m_nProgressCurr += 5;

  if (m_nProgressCurr > PROGRESS_MAX)
  {
   m_nProgressCurr = 0;
  }

  GetStatusBar ().SetPaneProgress (nStatusProgress, m_nProgressCurr);
 }
 
 CFormView::OnTimer(nIDEvent);
}

posted on 2010-08-16 17:44  carekee  阅读(982)  评论(0)    收藏  举报