前言
需要在界面上实时显示设备的状态,希望通过指示灯来显示,例如绿色代表正常,红色代表异常。
qt的实现方式见我的另一篇博文。
1. 添加资源文件
打开vs新建MFC工程,打开资源视图,如下图所示,添加资源。
导入图片位图,这里我导入的是红绿灰三种颜色的bmp文件,添加完成后,修改其ID(右击资源文件,打开属性,在属性栏修改ID),如下图所示。
2. 为工程导入Led.cpp和Led.h
见我的GitHub。
3. 实现Led
在合适的位置添加一个text control控件,并修改其ID,这里我将其caption改为led(这个无所谓,不影响功能),将其ID改为IDC_LED_LINKSTATUS。
在主视窗类中声明类的CLed成员m_linkLed。
// CTCPSeverDlg 对话框
class CTCPSeverDlg : public CDialog
{
// 构造
public:
CTCPSeverDlg(CWnd* pParent = NULL); // 标准构造函数
/*我是省略号...*/
public:
CLed m_linkLed;
};
在DoDataExchange函数中将IDC_LED_LINKSTATUS和m_linkLed关联起来。
void CTCPSeverDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control (pDX, IDC_LED_LINKSTATUS, m_linkLed); // “建立链接”LED
}
最后,在需要让Led变色的时候,调用如下代码。
// “建立链接”LED 设为灰色
m_linkLed.SetLed(CLed::LED_COLOR_GREY);
// “建立链接”LED 设为红色
m_linkLed.SetLed(CLed::LED_COLOR_RED);
// “建立链接”LED 设为绿色
m_linkLed.SetLed(CLed::LED_COLOR_GREEN);
效果如下:
刚打开软件时
开始监听后
建立链接时