经多方尝试,在使用c++开发windows应用程序中(不使用mfc,单纯用win32 api),想要改变按钮的背景色是一个很蛋疼的问题。

查询了msdn,找到如下说明:

在绘制按钮之前,会将 WM _ CTLCOLORBTN 消息发送到按钮的父窗口。 父窗口可以更改按钮的文本和背景色。 但是,仅所有者描述的按钮会响应处理此消息的父窗口。

仅所有者描述的按钮就是自绘按钮,如果不是自绘按钮则这个消息没啥用。但我创建自绘按钮了还需要用这个消息么??自己写代码绘制就行了。

网上查到的背景色修改代码:

case WM_CTLCOLORBTN:if((HWND)lParam==hwndBtn&&wParam==1){HWND hbn = (HWND)lParam;HDC hdc = (HDC)wParam;RECT rc;TCHAR text[64];GetWindowText(hbn, text, 63);GetClientRect(hbn, &rc);SetTextColor(hdc, RGB(0, 0, 0));SetBkMode(hdc, TRANSPARENT);DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);return (INT_PTR)CreateSolidBrush(RGB(0, 0, 255));}break;

其原理就是带BS_OWNERDRAW样式的按钮绘制前会向父窗口发送WM _ CTLCOLORBTN消息,在响应此消息时将自定义的画刷当做返回值返回应用程序,也即是其父窗口,父窗口会使用此画刷来绘制按钮背景,很不好用。

建议使用自绘按钮来实现相关功能。

WIN32 button背景色问题相关推荐

  1. java button 背景色_Swing JButton不会更改onclick的背景颜色 - java

    我希望单击该按钮时它永远不会更改背景颜色,默认情况下该颜色将更改为浅蓝色灰色. 这是我的代码 JButton b = new JButton(); b.setBackground(SystemColo ...

  2. android输入时背景颜色,Button根据EditText输入状态改变背景颜色

    需求 Button随EditText输入状态改变颜色 有3个不同颜色状态, EditText未输入时,Button处于不可点击状态 EditText输入时,Button处于高亮状态 EditText输 ...

  3. button常用操作

    隐藏button <input type="button" value="text" id="abc" style="dis ...

  4. Android Studio 4.2 中Button的Backgroud背景设置默认为蓝紫色且无法修改的问题,及Button控件中英文字母全部默认显示为大写的解决方法

    Button背景色无法修改 问题简述 在修改Button的背景颜色时,始终无法修改颜色为设置的颜色,且颜色始终为默认的蓝紫色: <Buttonandroid:id="@+id/btn_ ...

  5. Android Button 属性详解

    Button认知 public class Button extends TextView java.lang.Object↳ android.view.View↳ android.widget.Te ...

  6. ios的 UIButton

    -(IBAction) buttonClick:(id)sender   //sender参数,表示接受哪个按钮消息 { UIButton *button = (UIButton *)sender;  ...

  7. WPF窗口继承实现统一风格的自定义窗口

    如何实现一个窗口的风格(style),让所有的窗口都继承这样同样的风格,包括标题栏,放大.缩小和关闭按钮. 那么,我们可不可以就建立一个Base窗口,然后将这个窗口的风格给设计好之后,所有的窗口都继承 ...

  8. IOS ----UIButton用法详解

    这段代码动态的创建了一个UIButton,并且把相关常用的属性都列举了.希望对大家有用.   //这里创建一个圆角矩形的按钮 UIButton *button1 = [UIButton buttonW ...

  9. UI-UIButton、UILable、UITextField总结

    UIButton按钮====================================================== 第一.UIButton的定义 UIButton *button=[[U ...

最新文章

  1. visual assist x太卡了_LeetCode69. x 的平方根
  2. (POJ 3026) Borg Maze 最小生成树+bfs
  3. 【Raspberry Pi】定时运行python程序读温湿度传感器数据发邮件
  4. sr锁存器 数电_随机存取存储器 RAM || SRAM || DRAM || 数电
  5. 代理模式(为对象提供相同的接口)
  6. html 动态调用php文件,html静态页面调用php文件的方法
  7. 『飞秋』在ASP.NET服务器端过程中使用WebBrowser的注意事项
  8. 江门计算机职称考试时间,江门职称计算机考试时间
  9. 每日算法系列【LeetCode 376】摆动序列
  10. bzoj 3165: [Heoi2013]Segment 线段树
  11. arcgis双标准纬线等角圆锥投影_常用地图投影之圆锥投影
  12. jQuery设计思想
  13. java并发编程——创建线程之Thread 和 Runnable
  14. 回声状态网络(ESN)实现手写数字识别(MNIST)
  15. 帝国源码php安装文件是哪个,帝国CMS数据库配置文件是哪个文件?
  16. 到底什么是微前端,框架qiankun如何使用(基于vue,附代码)
  17. IDEA2020安装教程
  18. GD32 ADC采集电压
  19. 网页设计期末作业ppt+源码(免费获取)
  20. 主成分分析法概述、案例实例分析

热门文章

  1. 解决Pycharm专业版卡顿、运行内存不足,修改配置最大内存常见问题。
  2. 如何识别浏览器版本,以及对ieX浏览器以下进行控制
  3. c# winform 打印机控制帮助类
  4. Ubuntu安装JDK11
  5. python随机森林变量重要性_python中随机森林如何优化
  6. 荒野求生卡在获取服务器信息,资源采集点_荒野求生攻略大全 荒野求生实用技巧__跑跑车手机网...
  7. 小学计算机课教案艺术字,小学信息技术课《插入艺术字》说课稿
  8. ARM,AMD,X86,AArch64的概念
  9. PLM助力国防军工制造业工艺数字化
  10. 06、使用Gradle构建的项目如何打jar包和war包