VC++/MFC更新状态栏窗格的文本,设置状态栏的文本

本文仅仅针对MFC文档。

1、静态设置状态栏文本

静态设置,这里是指相对静止显示,也就是相应的按钮以及目录触发时提示在状态栏的文本。

比如新建的目录和工具栏的按钮的文本提示。下面图片里面的框选的三处就是静态显示文本相关的。

VC++/MFC更新状态栏窗格的文本,设置状态栏的文本_第1张图片

这个设置比较简单了。操作如下:

VC++/MFC更新状态栏窗格的文本,设置状态栏的文本_第2张图片

打开资源视图->打开String table-> 双击String table,然后下拉到最下面,添加一个ID,对应刚才添加的目录和按钮的ID,然后补充文本,就ok了。

VC++/MFC更新状态栏窗格的文本,设置状态栏的文本_第3张图片

上面图路面的框选处就是静态设置的文本了,只要在程序运行的时候,鼠标移动到添加的目录和按钮上面的时候,自然就在状态栏显示文本了。

上面说的静态的情况了,但是如果我要动态的设置,怎么办?也很简单。

 

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重写一个基类函数,就是单击事件:

VC++/MFC更新状态栏窗格的文本,设置状态栏的文本_第4张图片

我们实现对应的功能:

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

    *pResult = 0;
}

这里,调用了我前面实现的SaleSetStatusBarText函数。

来看一下效果:

VC++/MFC更新状态栏窗格的文本,设置状态栏的文本_第5张图片

最后,要说明一点,
m_status_bar = ((CMainFrame*)AfxGetMainWnd())->MainFrameGetStBar();

一定要放在OnInitialUpdate()里面,不可以放在CSaleRecordView的构造函数里面,因为View是在Frame之前构造的。

你可能感兴趣的:(VC/MFC)