【远控编写08】客户端界面的设计和编写--为对话框添加状态栏并在态栏上显示文字

一.基础知识:

1.状态条类: CStatusBar.(在MSDN中查看其成员Member)

2.在状态条中加入对应字符串ID:

[cpp]  view plain copy
  1. BOOL SetIndicators(  
  2.   const UINT* lpIDArray, //字符串ID           
  3.   int nIDCount       //个数  
  4.   );  


3.设置状态条的显示状态:

[cpp]  view plain copy
  1. void SetPaneInfo(  
  2.   int nIndex, //状态条的索引  
  3.   UINT& nID, //状态条的字符ID  
  4.   UINT& nStyle, //状态条的样式  
  5.   int& cxWidth //状态条的宽度  
  6.   ) const;  


4.设置状态条的显示信息:

[cpp]  view plain copy
  1. //Call this member function to set the pane text to the string pointed to by lpszNewText.  
  2. BOOL SetPaneText(  
  3.    int nIndex,  
  4.    LPCTSTR lpszNewText,  
  5.    BOOL bUpdate = TRUE   
  6. );  



 

二.具体实现:

1.在资源视图里面,创建字符串资源,
重设ID为:IDR_STATUSBAR_STRING. 标题: 就绪


2.在对话框类的头文件声明中,添加保护成员:

[cpp]  view plain copy
  1. CStatusBar m_wndStatusBar; //状态条  


3.写入代码创建状态条的代码:
(1)创建字符ID的数组:

[cpp]  view plain copy
  1. static UINT indicators[] =  
  2. {  
  3.  IDR_STATUSBAR_STRING  
  4. };  


(2)添加CreatStatusBar函数并写入代码:

[cpp]  view plain copy
  1. // create status bar  
  2. void CPCRemoteDlg::CreatStatusBar(void)  
  3. {  
  4.  if (!m_wndStatusBar.Create(this) ||  
  5.   !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))) //创建状态条并设置字符资源的ID  
  6.  {  
  7.   TRACE0("Failed to create status bar\n");  
  8.   return ;      // fail to create  
  9.  }  
  10.  CRect rc;  
  11.  ::GetWindowRect(m_wndStatusBar.m_hWnd,rc);               
  12.  m_wndStatusBar.MoveWindow(rc);  //移动状态条到指定位置  
  13. }  


(3)在OnInitDialog函数中添加:

[cpp]  view plain copy
  1. CreatStatusBar(); // 初始化消息条  


(4)在OnSize 中添加代码:

[cpp]  view plain copy
  1. if(m_wndStatusBar.m_hWnd!=NULL){    //当对话框大小改变时 状态条大小也随之改变  
  2.  CRect rc;  
  3.  rc.left=0;  // 消息条的左坐标  
  4.  rc.top=cy-20; // 消息条的上坐标  
  5.  rc.right=cx; // 消息条的右坐标  
  6.  rc.bottom=cy; // 消息条的下坐标  
  7.  m_wndStatusBar.MoveWindow(rc);  
  8.  m_wndStatusBar.SetPaneInfo(0, m_wndStatusBar.GetItemID(0),SBPS_POPOUT, cx-10);  
  9. }  


4.写入状态上显示文字的代码:
①在对话框类的头文件声明中,添加保护成员: 

[html]  view plain copy
  1. int iCount; // 记录上线的数量.  


②在构造函数中,初始化:

[cpp]  view plain copy
  1. iCount=0;  


③在ShowMessage函数尾部,添加如下代码:

[cpp]  view plain copy
  1. CString strStatusMsg;  
  2.  if (strMsg.Find("上线")>0)  //处理上线还是下线消息  
  3.  {  
  4.   iCount++;  
  5.  }else if (strMsg.Find("下线")>0)  
  6.  {  
  7.   iCount--;  
  8.  }else if (strMsg.Find("断开")>0)  
  9.  {  
  10.   iCount--;  
  11.  }  
  12.  iCount=(iCount<=0?0:iCount); //防止iCount 有-1的情况  
  13.  strStatusMsg.Format("上线: %d",iCount);  
  14.  m_wndStatusBar.SetPaneText(0,strStatusMsg); //在状态条上显示文字  


5.运行效果:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值