MFC-單文檔-狀態欄中添加按鈕的實現


需求:單文檔中,默認的狀態欄是分隔開來的,而且是無法點擊的。現需要在狀態欄上添加一個按鈕,並實現點擊按鈕刪除按鈕上文本的功能。

實現步驟:

第一步,先在初始化的時候,動態創建一個按鈕。

1 CButtonST        m_btnStatusBarErrorTips;//狀態欄上的錯誤提示

CButtonST是一個button的實現類,可自行百度。(可參考http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html)

 1 void HelloBtn::SetNormalBtnStatus(CWnd*pWnd,CButtonST* pBtn,int nBmpIn,int nBmpOut,int nWidthOffset,int nHeightOffset)
 2 {
 3     CRect rect;
 4 
 5     //設置按鈕
 6     pBtn->GetWindowRect(&rect);
 7     pWnd->ScreenToClient(&rect);
 8     rect.right = rect.left + nWidthOffset;
 9     rect.bottom= rect.top  + nHeightOffset;
10     pBtn->MoveWindow(&rect);
11     pBtn->SetAlign(CButtonST::ST_ALIGN_OVERLAP);
12     pBtn->SetBitmaps(nBmpIn,RGB(255,255,255),nBmpOut,RGB(255,255,255));    
13 }

開始創建按鈕

1 //添加狀態欄錯誤提示按鈕
2     m_btnStatusBarErrorTips.Create(_T(""), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
3         CRect(900,0,600,20), &m_wndStatusBar, ID_BUTTON_ERROR_TIPS);
4     m_btnStatusBarErrorTips.SetFont(&m_font);
5     m_btnStatusBarErrorTips.SetAlign(CButtonST::ST_ALIGN_HORIZ_RIGHT);
6     m_btnStatusBarErrorTips.SetTheTextColor(RGB(255,0,0));

 

第二步,初始化狀態欄時,設置按鈕背景圖

1 HELLOBTN.SetNormalBtnStatus(this,&m_btnStatusBarErrorTips,IDB_BMP_ERROR_TIPS,IDB_BMP_ERROR_TIPS,600,20);

 

第三步,給按鈕添加響應函數,這個步驟就不細說了,很簡單。

 然后初始化狀態欄即可。(具體實現步驟可參考我其他的隨筆)

總結:總的來說,要想在狀態欄添加按鈕,首先要將按鈕作為狀態欄的子控件創建出來。然后再根據需要添加按鈕的位置,對按鈕進行步驟,修飾和響應的實現。

缺陷:目前還未實現將按鈕的文本左對齊處理,若后期有處理,再進行說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM