MFC控件 状态条的简单介绍及使用 CStatusBar

 1、CStatusBar在MFC中类继承关系:
CObject
  CCmdTarget
    CWnd
      CControlBar
        CStatusBar

2、CStatusBar成员函数介绍:
virtual BOOL Create(
   CWnd* pParentWnd,
   DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
   UINT nID = AFX_IDW_STATUS_BAR
);

函数用途:创建一个CStatusBar并将其与CStatusBar对象关联;
参数说明:pParentWnd:指向CStatusBar的父窗口(Windows窗口);
          dwStyle:CStatusBar的类型,CBRS_TOP:将Bar放在框架的顶部,CBRS_BOTTOM:将其放在框架的底部。CBRS_NOALIGN:当父窗口改变时,不重型调整Bar;
   nID:toolbar的子窗口ID;
返回值:成功返回非零,否则返回零;

2、BOOL SetIndicators(
   const UINT* lpIDArray,
   int nIDCount
);

函数用途:加载lpIDArray中的ID所对应的字符串资源,并将ID所对应的文本保存在字符串资源中;
参数说明:lpIDArray:ID队列指针
          nIDCount:队列中元素的个数;
返回值:成功返回非零,否则返回零;

3、BOOL SetPaneText(
   int nIndex,
   LPCTSTR lpszNewText,
   BOOL bUpdate = TRUE
);
函数用途:将CStatustBar中的长方块设置成lpszNewText所指向的内容;
参数说明:nIndex:长方块的索引号(从零开始计,第零个固定用来状态指示)
   lpszNewText:需要加载的内容;(需要在第nIndex个长方块上显示的字符串)
   bUpdate:等于TRUE时,当加载了新的字符内容后,将长方块设置为无效。无效使得窗口自动刷行,那么新内容就被显示在界面上了。

4、void GetItemRect(
   int nIndex,
   LPRECT lpRect
) const;
函数用途:将nIndex所在的位置的矩形坐标拷贝到lpRect中。
参数说明:nIndex:长方块的标识;
   lpRect:指向Rect结构的指针,用来保存获得到的矩形坐标;
返回值:无
注意:坐标是以象素为单位的,原点在左上角。

5、void GetPaneInfo(
   int nIndex,
   UINT& nID,
   UINT& nStyle,
   int& cxWidth
) const;
函数用途:获得Pane的相关信息:ID,Style,宽度。
参数说明:nIndex:需要获得的Pane的索引
   nID:nIndex所对应Pane的ID
   nStyle:nIndex对应的Pane的类型;
   cxWidth:nIndex对应的Pane的宽度;
返回值:无

6、void SetPaneInfo(
   int nIndex,
   UINT nID,
   UINT nStyle,
   int cxWidth
);
函数说明:设置Pane的相关信息;
参数说明:nIndex:需要设置的Pane的索引;
   其余和5相同;
返回值:无

7、void SetPaneStyle(
   int nIndex,
   UINT nStyle
);
函数说明:设置Pane的类型
参数说明:nIndex:需要设置的Pane的索引
   nStyle:类型;

返回值:无

 

nStyle的值可以为:

The status-bar style. In addition to the standard Windows styles, these styles are supported.

CBRS_TOP   Control bar is at top of frame window.

CBRS_BOTTOM   Control bar is at bottom of frame window.

CBRS_NOALIGN   Control bar is not repositioned when the parent is resized.

 

 

8、UINT GetPaneStyle(
   int nIndex
) const;
函数说明:获得Pane的类型
参数说明:nIndex:需要获得的Pane的索引
返回值:无

 

举例:

生成一个MFC应用程序,参照如下说明修改代码:

 

static UINT indicators[] =
{
 ID_SEPARATOR,           // 状态行指示器
 ID_INDICATOR_CLOCK,
 ID_INDICATOR_CAPS,
 ID_INDICATOR_NUM,
 ID_INDICATOR_SCRL,
};

说明:

indicator数组提供了状态栏窗格的分配信息,它的第一项一般为ID_SEPARATOR,该ID对应的窗格用来显示命令提示信息,后三项都是字符串ID,读者可以在String Table字符串资源中找到这三个字符串分别是CAP、NUM和SCRL。它们对应的三个窗格用来显示键盘的状态。

  现在让我们来给状态栏再加一个时间窗格,它将用来显示系统时间。显示的格式是hh:mm:ss,即时:分:秒。

  首先在indicators数组的ID_SEPARATOR项之后插入一个名为ID_INDICATOR_CLOCK的ID。然后找到并双击名为String Table的字符串资源,打开字符串资源编辑窗口。接着在编辑窗口内按Insert键以插入一个新的字符串,请指定字符串的ID为ID_INDICATOR_CLOCK,内容为00:00:00。状态栏将根据字符串的长度来确定相应窗格的缺省宽度,所以指定为00:00:00就为时间的显示预留了空间。

时间窗格显示的时间必须每隔一秒钟更新一次。更新时间窗格的正文可调用CStatusBar:: SetPaneText函数,要定时更新,则应利用WM_TIMER消息。在Windows中用户可以安装一个或多个计时器,计时器每隔一定的时间间隔就会自动发出一个WM_TIMER消息,而这个时间间隔可由用户指定。MFC的Window类提供了WM_TIMER消息处理函数OnTimer,我们应在该函数内进行更新时间窗格的工作。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在MFC中编写CAN通信,您可以使用以下控件来实现相关功能: 1. CComboBox:用于选择CAN接口。您可以向其添加不同的CAN接口选项,并使用GetCurSel函数获取当前选择的接口。 2. CListBox:用于显示CAN数据。您可以通过AddString函数将接收到的CAN数据添加到列表框中,然后使用GetSelItems函数获取选中的数据项。 3. CEdit:用于输入CAN消息。您可以通过GetWindowText函数获取用户输入的CAN消息,并使用SetWindowText函数将CAN消息设置到文本框中。 4. CButton:用于发送CAN消息。您可以使用控件的OnClicked事件来处理发送按钮的点击操作,然后使用CAN接口库函数将CAN消息发送出去。 5. CStatic:用于显示CAN状态信息。您可以使用SetWindowText函数将相应的状态信息显示在静态文本框中。 6. CProgressCtrl:用于显示发送进度。您可以使用SetPos函数更新进度的进度,并通过GetPos函数获取当前进度值。 以上是一些常用的控件,您可以根据具体需求和界面设计添加适当的控件来辅助实现CAN通信功能。 ### 回答2: 在使用MFC编写CAN通讯时,可以添加以下控件: 1. CComboBox控件:用于选择CAN通讯的设备类型和通讯波特率等参数。通过添加合适的列表项,用户可以方便地选择CAN设备,并设置通讯参数。 2. CButton控件:用于创建按钮,比如“打开设备”、“发送数据”、“关闭设备”等按钮。用户可以点击按钮执行相应的操作,例如打开CAN设备、发送CAN数据等。 3. CEdit控件:用于显示和编辑CAN通讯的发送和接收数据。用户可以在编辑框中输入要发送的CAN数据,同时也可以显示已接收到的CAN数据。 4. CListCtrl控件:用于显示CAN通讯的接收数据和其他相关信息。通过添加合适的列和行,用户可以查看接收到的CAN数据信息,如ID、数据、时间戳等,以及其他相关的通讯状态信息。 5. CStatusBar控件:用于显示CAN通讯的状态栏信息,例如当前设备的连接状态、通讯波特率等。可以在状态栏上实时显示通讯状态,提供给用户实时的反馈。 需要注意的是,以上仅为常见的控件示例,实际的界面设计和控件选择要根据具体的需求来确定。另外,还需要相应的MFC类和函数来处理控件的事件和操作,实现CAN通讯的功能。 ### 回答3: 在MFC中编写CAN通信时,需要添加以下控件: 1. CButton:用于触发CAN通信操作的按钮,例如启动/停止通信按钮。 2. CEdit:用于显示CAN通信接收到的数据以及用户输入的CAN数据。可以设置为只读或可编辑状态。 3. CComboBox:用于选择CAN设备的下拉列表框。可以在列表框中添加可用的CAN设备选项,供用户选择并进行通信。 4. CListBox:用于显示CAN通信的日志信息、发送/接收数据的时间戳,以及其他特定的CAN通信状态信息。 5. CStatic:用于显示并更新连接状态、发送/接收数据的计数等CAN通信相关信息。 6. CProgressCtrl:用于显示CAN通信进度,例如发送数据的进度。 7. CSliderCtrl:用于调整CAN通信的参数,例如波特率、滤波规则等。 8. CIPAddressCtrl:用于设置CAN设备的IP地址和端口号。 以上控件可根据实际需求进行灵活组合和调整,以实现CAN通信功能的界面交互。同时,还需要编写对应的事件处理函数,用于处理控件的消息响应和CAN通信的具体操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值