MFC按钮控件实现指示灯效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC按钮控件实现指示灯效果相关的知识,希望对你有一定的参考价值。

VC为按钮控件添加图片的方法有很多种:

  •  直接调用SetBitmap;
  • 使用CButtonST控件;
  • 使用CDC;
  • 使用CBitmapButton;

这里主要讲解CBitmapButton的使用,CBitmapButton作为MFC的控件类,具体使用如下:

创建一个新的基于对话框的MFC工程

1. 首先添加按钮控件,将属性Owner Draw设为True,按钮ID:

2. 添加位图资源ID: IDB_BITMAP_CLOSE    IDB_BITMAP_RED

3. 在对话框类中添加private成员变量:

4. 在初始化函数OnInitDialog里添加图片加载:

5.

m_button.LoadBitmaps(IDB_BITMAP_CLOSE);
m_button.SubclassDlgItem(IDC_BUTTON1,this);
m_button.SizeTocontent();


6. 使用CBitmapButton::LoadBitmaps装载各种状态的图片,再用SubclassDlgItem关联到想要的按钮,使用
CBitmapButton::SizeToContent函数使按钮适合图片大小。注意Loadbitmaps一定要在关联到按钮之前进行!

7. 为按钮控件添加单击事件处理函数,输入如下代码:

8.

LedFlag = !LedFlag;
if(LedFlag)

m_button.LoadBitmaps(IDB_BITMAP_RED);
m_button.Invalidate();

else

m_button.LoadBitmaps(IDB_BITMAP_CLOSE);
m_button.Invalidate();

9. 按理来说,写上m_ctrlButton.LoadBitmaps(图片ID);就可以了,可是这样做之后,发现按键了没反应。无意中将对话框最小化再还原,发现图片变了。所以实际上是没有进行刷新导致的。在后面加上m_button.Invalidate()就可以了。

10.  运行程序

11. 

MFC按钮控件实现指示灯效果_指示灯


12.  单击控件按钮变成红色

MFC按钮控件实现指示灯效果_MFC_02

 

以上是关于MFC按钮控件实现指示灯效果的主要内容,如果未能解决你的问题,请参考以下文章

MFC如何添加自定义控件

LabVIEW设计自定义指示灯和按钮控件

VC++(MFC)中动态创建和管理按钮控件,怎么做?

Visaul Studio 2015 MFC控件使用之--按钮(Button)

如何在 mFC VC++ 中将编辑控件的背景转换为透明?

MFC 中的 OwnerDrawn 控件