VC++/MFC更新狀態欄窗格的文本,設置狀態欄的文本

本文僅僅針對MFC文檔。

1、靜態設置狀態欄文本

靜態設置,這裏是指相對靜止顯示,也就是相應的按鈕以及目錄觸發時提示在狀態欄的文本。

比如新建的目錄和工具欄的按鈕的文本提示。下面圖片裏面的框選的三處就是靜態顯示文本相關的。

這個設置比較簡單了。操作如下:

打開資源視圖->打開String table-> 雙擊String table,然後下拉到最下面,添加一個ID,對應剛纔添加的目錄和按鈕的ID,然後補充文本,就ok了。

上面圖路面的框選處就是靜態設置的文本了,只要在程序運行的時候,鼠標移動到添加的目錄和按鈕上面的時候,自然就在狀態欄顯示文本了。

上面說的靜態的情況了,但是如果我要動態的設置,怎麼辦?也很簡單。

 

2、動態設置狀態欄文本

首先,在class CMainFrame裏面,有成員CStatusBar        m_wndStatusBar,這個是系統創建的時候設定的。

接着,在CMainFrame裏面添加成員函數,public屬性:

    CStatusBar *MainFrameGetStBar()
    {
        return &m_wndStatusBar;
    }

然後,在class CSaleRecordView : public CListView裏面添加成員,這個view就是視圖了,用來:

CStatusBar  *m_status_bar;

添加一個成員函數,用來設置狀態欄的文本顯示的。

    void SaleSetStatusBarText(CString in)
    {
        m_status_bar->SetPaneText(0, in);
    }

然後,初始化m_status_bar,就用到了我們在Mainframe類裏面剛纔添加的MainFrameGetStBar。

void CSaleRecordView::OnInitialUpdate()
{
    CListView::OnInitialUpdate();


    // TODO: You may populate your ListView with items by directly accessing
    //  its list control through a call to GetListCtrl().

    m_status_bar = ((CMainFrame*)AfxGetMainWnd())->MainFrameGetStBar();
}

最後,需要試用功能行不行了,我們給CSaleRecordView重寫一個基類函數,就是單擊事件:

我們實現對應的功能:

void CSaleRecordView::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: Add your control notification handler code here
    SaleSetStatusBarText("chifanla...");

    *pResult = 0;
}

這裏,調用了我前面實現的SaleSetStatusBarText函數。

來看一下效果:

最後,要說明一點,
m_status_bar = ((CMainFrame*)AfxGetMainWnd())->MainFrameGetStBar();

一定要放在OnInitialUpdate()裏面,不可以放在CSaleRecordView的構造函數裏面,因爲View是在Frame之前構造的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章