博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC++ CStatic控件背景透明且改变其文本时,文字重叠解决方法
阅读量:6892 次
发布时间:2019-06-27

本文共 1364 字,大约阅读时间需要 4 分钟。

最近在项目中将CStatic控件设置为背景透明且在一个定时器函数改变其文本,结果CStatic的文字重叠了。解决该问题的方案是:从CStatic类派生自己的静态文本控件。

其实设置背景透明,也就是在CStatic重画时,返回一个空刷子而已,所以改变文本并没有改变上次残留的背景,从而导致重叠现象。

为了解决这个问题,我们可以让父窗口重绘该区域,以下是我的解决方法:

1: 从CStatic继承一个类CStaticEx

2: 增加WM_CTLCOLOR消息反射(把很多事情留给父窗口窗口处理不是一件很好的事,就让CStaticEx自己处理,这样还可以不影响到其他的Static)

3:处理WM_SETTEXT,当文本改变时,重绘父窗口的该控件所在的区域。

代码如下:

  

// StaticEx.h

class CStaticEx : public CStatic{ DECLARE_DYNAMIC(CStaticEx)public: CStaticEx(); virtual ~CStaticEx();protected: DECLARE_MESSAGE_MAP() afx_msg HBRUSH CtlColor(CDC* pDC, UINT ); virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);};//

 

#include "StaticEx.h"

// StaticEx.cpp

IMPLEMENT_DYNAMIC(CStaticEx, CStatic)CStaticEx::CStaticEx(){}CStaticEx::~CStaticEx(){}BEGIN_MESSAGE_MAP(CStaticEx, CStatic)    ON_WM_CTLCOLOR_REFLECT()END_MESSAGE_MAP() // CStaticEx 消息处理程序HBRUSH CStaticEx::CtlColor(CDC* pDC, UINT ){ pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255, 0, 0)); return (HBRUSH)GetStockObject(HOLLOW_BRUSH);} LRESULT CStaticEx::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam){ if(WM_SETTEXT == message) {  CRect rect;  GetWindowRect(&rect);  CWnd *pParentWnd = GetParent();  if(pParentWnd)  {   pParentWnd->ScreenToClient(&rect);   pParentWnd->InvalidateRect(&rect);  } } return CStatic::DefWindowProc(message, wParam, lParam);}

 

转载于:https://www.cnblogs.com/lujin49/p/4912494.html

你可能感兴趣的文章
IDF2011:基于SaaS模式的"教学云"案例
查看>>
《Linux From Scratch》第三部分:构建LFS系统 第七章:基本系统配置- 7.5. 配置系统时间...
查看>>
云计算你必须思考的8大问题
查看>>
Windows7 Debug Test
查看>>
HTTPS连接的前几毫秒发生了什么
查看>>
从变量到封装:一文带你为机器学习打下坚实的Python基础
查看>>
给大家共享一个基本算法包
查看>>
Riverbed:SDN向广域网扩展为企业带来哪些价值
查看>>
定义中国网络安全市场战略高度,绿盟科技为“互联网+”保驾护航
查看>>
python 自定义 包 模块 打包 安装
查看>>
ubuntu桌面的标题栏和启动栏消失问题[亲测可用]
查看>>
Cloud technology in today's job market
查看>>
3月31日云栖精选夜读:数据科学咨询:想要转型毫无头绪?看了本文你不慌
查看>>
程序猿日记S01E03
查看>>
如何解决域名解析不生效问题?
查看>>
Android开发者指南(9) —— ProGuard
查看>>
MySQL · 答疑解惑 · 物理备份死锁分析
查看>>
字符串指针修改问题
查看>>
JavaScript权威设计--跨域,XMLHttpRequest(简要学习笔记十九)
查看>>
跨入流式计算时代,用不着洪荒之力——在阿里云容器服务上一键部署JStorm
查看>>