LEDBUTTON类简单描述及总结

来源:互联网 发布:激光设备软件开发 编辑:程序博客网 时间:2024/06/02 06:49
文件定义
...#include "LedButton.h"...class DemoDlg : public CDialog{   ...private:   ...   CLedButton m_ledCtrl;};

 

void CDemoDlg::DoDataExchange(CDataExchange* pDX){   ...   DDX_Control(pDX, IDC_LED_CHECK, m_ledCtrl);   ...}

 

2色设定,即2个状态(如亮或灭,红或蓝):

SetIcons();  //设置OFF及ON图标

m_ledCtrl.SetIcons(IDI_GRAY_ICON, IDI_YELLOW_ICON);

若需要改变图标大小,使用SetIcon() ,在亮或灭切换中使用大小图标效果不错!

m_ledCtrl.SetIcon(LED_BUTTON_STATE_OFF, IDI_GRAY_ICON, 14,14);m_ledCtrl.SetIcon(LED_BUTTON_STATE_ON, IDI_YELLOW_ICON, 14,14);

 

SetLedState()  //完成LED颜色的设定,在每次想要改变LED颜色时

 m_ledCtrl.SetLedState(LED_BUTTON_STATE_ON);

多色调用时,可以设定一个枚举类型,用来描述每种颜色的状态,方便调用,如:

    enum EMyLedState {        GRAY_LED_STATE = LED_BUTTON_STATE_ON,     // Initial LedState        GREEN_LED_STATE,        YELLOW_LED_STATE,        RED_LED_STATE,        BLUE_LED_STATE,                MY_LED_STATES_SENTINEL    // Not to be used as a EMyLedState.    };

初始化时需要设定LED的最大数量,即SetLedStateSNumber(),传递枚举成员的数量

    ...    m_ledCtrl.SetLedStatesNumber(MY_LED_STATES_SENTINEL);    m_ledCtrl.SetIcon(GRAY_LED_STATE, IDI_GRAY_ICON);    m_ledCtrl.SetIcon(GREEN_LED_STATE, IDI_GREEN_ICON);    m_ledCtrl.SetIcon(YELLOW_LED_STATE, IDI_YELLOW_ICON);    m_ledCtrl.SetIcon(RED_LED_STATE, IDI_RED_ICON);    m_ledCtrl.SetIcon(BLUE_LED_STATE, IDI_BLUE_ICON);    ...

..

上面的LED在设定后就会一直处于某种状态,不改变,若要实现;LED灯不停的闪烁,则我们需要一个活动的LED按钮

我们可以使用SetLedActivityTimer()  函数,它会让你传递一个计时器的ID号和间隔的时间,当ID为非零时,则在每次调用 SetLedState()函数时,则会触发LedButton类中的一个内部计时器,它会设定LED灯状态到LED_BUTTON_STATE_OFF当间隔时间到达时,则LED按钮关闭.

我们在设计不停闪烁状态时,可以将亮灯的状态放入我们写好的一个计时器中,则在每次循环时,都会触发亮灯状态,而熄灭的状态则有LedButton自行触发.

总结:

1.简单2种颜色切换显示,就使用SetIcon或setIcons及SetLedState来实现

2.2种以上颜色切换显示,使用SetLedStatesNumber函数,传递枚举成员数量及SetLedState实现

3.LED闪烁状态,使用SetLedActivityTimer,在SetLedState函数中会对所有非灭状态的LED,触发计时器,一旦LED熄灭,则计时器关闭.

 

原创粉丝点击