VC的MFC实现“指示灯”效果

首先,这是我,一个极其业余的“程序猿”,采用的一个很山寨的方法。
起因是自己编写的一个程序因为老板的需要要在界面上添加一个“指示灯”,按下某个按钮变绿,按下另外的按钮变红,还要有个变黄的功能,灯要好看一点的不要色彩填充那种过于山寨的
所以,首先在对话框上添加一个按钮,因为在按钮上添加图片比较容易;

步骤/方法

  • 01

    然后修改按钮的ID为:IDC_ForShow;按钮的Disabled属性改为True 在对话框的头文件里面定义变量:CBitmapButton m_ctrlButton; 然后重写OnInitDialog() 头一句为CDialog::OnInitDialog(); 接下来按照提示进行代码添加: m_ctrlButton.SubclassDlgItem(IDC_ForShow, this); m_ctrlButton.ModifyStyle(0,BS_OWNERDRAW); m_ctrlButton.LoadBitmaps(IDB_STOP);

  • 02

    其中,IDB_STOP是导入的bmp图片的ID号,这个bmp图片实际上是我在PPT里面做的,它的画图功能还是挺强大的,恩。

  • 03

    可是还有两个问题: 1. 画出来的图片很可能与按钮的尺寸不符。解决方法:一方面保证图片的尺寸和按钮尽量相符,同时拖拽控制按钮的大小进行配合;另一方面也可以利用函数修改控件尺寸,但是我写入代码之后发现控件的尺寸改变不了,不知道哪个属性应该先修改一下才能调节 2. 按下相关按钮之后图片如何改变。解决方法:按理来说,写上m_ctrlButton.LoadBitmaps(图片ID);就可以了,可是这样做之后,发现按键了没反应。无意中将对话框最小化再还原,发现图片变了。所以实际上是没有进行刷心导致的。在后面加上m_ctrlButton.Invalidate()就可以了

  • 04

    重申,这就是个山寨的法子,如果有老师同学知道更简单更实用的办法不要吝啬啊,拿出来分享一下吧

(0)

相关推荐

  • VC++ API MFC动态改变编辑框里的文字颜色

    摘要:关于VC++ API MFC动态改变编辑框里的文字颜色的代码. 步骤/方法 01 重载 HBRUSH C人脸比对Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UIN ...

  • VS2013下手把手教你用VC++做程序

    上一篇作者教大家把VS2013装上,今天主要是分享一下新平台下用VC++的MFC框架做程序,保证大家即学即,如果对vc++比较了解的,就可以跳过了.-- 利用MFC框架生成项目 01 首先打开VS20 ...

  • QCY T1全无线耳机功能使用

    目前这个时代,越来越多的手机款式从传统3.5mm模拟输出转向了纯数字输出的设计,以提升音质的输出标准,满足更多对于声音品质有需求的小伙伴.这同时也让无线蓝牙耳机大行其道,本文是介绍一款QCY T1全无 ...

  • 自己做玩具教你打造乐高积木版数码U盘

    成年人的世界太累,所以无比的怀念童年的时光.对于这帮DIYer来说,童年的乐高积木,可以算是DIY的启蒙老师.如今DIYer们成功进化,但是也不会忘记最初的启蒙情怀,DIY一个乐高积木版的U盘,就当作 ...

  • VC++ MFC保存编辑框中的内容弹出另存为对话框

    摘要:关于VC++ MFC保存编辑框中的内容弹出另存为对话框的深入研究. 步骤/方法 01 向文本文件写入内容应该不难,学C++时专门讲过. #include ofstream ofs("t ...

  • VC/MFC的非常规调试方法

    摘要:关于VC/MFC的非常规调试方法的深入研究. 步骤/方法 01 重新编连你的应用程序 当你的程序表现出异常的或意外的行为,或者Visual C++编译器因为一个内部编译器错误而失败时,最好删除工 ...

  • 怎么用vc++6.0编写程序

    vc++6.0是微软比较老的C++集成开发环境,是微软visual studio的一员,一般用于新手学习C++使用,也有人用习惯了vc6.0,只是将其做为一个编辑器,因为新版的visual studi ...

  • 电脑硬盘指示灯不亮怎么办?如何解决电脑硬盘灯不亮问题

    HDD LED和power LED是有正负极的,插反了就亮不了,有颜色那跟是正极,HDD LED正极一般是红色的,注意连接主机的前面板的线缆的时候注意一定不要插错,轻者就是造成一些不良的反应,如无法开 ...

  • 路由器指示灯不亮了怎么办 路由器上的信号指示灯不亮的解决办法总结

    最近,接到不少网友的反应。说自己的无线路由器信号指示灯不亮,刚开始以为是路由器坏额,后来检测发现不是路由器的问题。今天小编就总结一下导致这种情况可能存在的问题,当然额,不排除小编总结的方法不全面。呵呵 ...