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之前构造的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值