6.10--如何更新状态栏格的文本?

      更新状态栏格文本的 正确方法 是 为状态栏的 每格 书写UPDATE_COMMAND_UI消息处理函数,MFC允许----甚至是鼓励----以与处理 菜单项 和 工具栏按钮 相同的方法处理 状态栏的 每个格,因此,要更新状态栏内某一格的文本,仅仅书写一个与该格ID相关的UPDATE_COMMAND_UI句柄就可以了,与处理 菜单 和 工具栏按钮 一样,应该在与 状态栏格在逻辑上相关的类内书写该句柄,因为 管理 该格内显示的文本 可能是文档、视图、框架窗口或别的类。然后,MFC消息传送体系确保在空闲进程处理中、在正确的上下文内按照需要调用句柄。

 

      比如:指示器ID_INDICATOR_X和ID_INDICATOR_Y显示当前的光标坐标,而该坐标由视图对象接收到的WM_MOUSEMOVE消息决定,因此这些指示器的UPDATE_COMMAND_UI消息句柄就属于视图类,而ID_INDICATOR_SHAPE格显示当前选择的图形,该格由文档对象管理,因此,该指示器的UPDATE_COMMAND_UI句柄处理函数就应该定义为文档类的一个成员函数。

 

步骤如下:

1a:

afx_msg void OnUpdateIndicatorX(CCmdUI* pCmdUI);
afx_msg void OnUpdateIndicatorY(CCmdUI* pCmdUI);

 

1b:

ON_UPDATE_COMMAND_UI(ID_INDICATOR_X,OnUpdateIndicatorX )
ON_UPDATE_COMMAND_UI(ID_INDICATOR_Y,OnUpdateIndicatorY )

 

1C:

void CDrawView::OnUpdateIndicatorX(CCmdUI* pCmdUI)
{
      CString s;
      s.Format("x=%d",m_ptLast.x);//m_ptLast为在WM_MOUSEMOVE消息处理函数中得到的鼠标坐标
      pCmdUI->SetText(s);
      pCmdUI->SetCheck(m_ptLast.x > 200);
      pCmdUI->Enable(true);
}

void CDrawView::OnUpdateIndicatorY(CCmdUI* pCmdUI)
{
      CString s;
      s.Format("y=%d",m_ptLast.y);
      pCmdUI->SetText(s);
      pCmdUI->SetCheck(m_ptLast.y > 200);
      pCmdUI->Enable(true);
}

 

说明:

这里是能应用于 与 状态栏格 联合的CCmdUI对象的操作:

Enable(),激活状态栏格  或 使该格失效。

SetText(LPCTSTR lpszText),设置在状态栏格内显示的文本,这是更新状态栏格文本推荐的方法。

SetCheck(int nCheck=1),可导致给状态栏格凸起或凹陷。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值