文件定义
... #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熄灭,则计时器关闭.