MFC怎么设置静态控件区域的颜色

图1图2图一是一个静态文本区域与一个CStatic类对象关联了。也设置了区域的大小。图二是对话框程序的主界面。也就是主程序的背景。我在静态文本类CStatic的OnCtl... 图1

图2

图一是一个静态文本区域与一个CStatic类对象关联了。也设置了区域的大小。
图二是对话框程序的主界面。也就是主程序的背景。
我在静态文本类CStatic的OnCtlColor函数里设置了背景模式为透明,但是每次刷新文本区域时都会闪屏显示出图二的颜色。请问这个问题怎么解决?或者直接把静态文本区域背景色改黑色能解决不闪出图二颜色吗?
我现在只能靠把图2的颜色改为黑色才能投机解决闪屏的问题。

请问有没有好的方法解决?
这是OnCtlColor函数函数定义

HBRUSH CLinkStatic::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CStatic::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

pDC->SetBkMode(TRANSPARENT); //设置背景模式为透明

pDC->SetTextColor(RGB(0,0,0));

// TODO: Return a different brush if the default is not desired
return hbr;
}
展开
 我来答
出家人词悲
高赞答主

2015-06-15 · 大脑停止不了思考
知道大有可为答主
回答量:1.4万
采纳率:12%
帮助的人:3791万
展开全部
设置背景透明后,控件的重绘会触发父窗口的背景重绘,因此会出现闪烁。
这个优化起来会比较困难,其实都设置为黑色背景也没什么问题,这样就不会触发二次重绘了。可以在绘图区域再套一个静态框,背景黑色。
例如:新建基于对话框的mfc程序。
添加一个static标签控件,ID为:IDC_STATIC_DEMO
在CXXXDlg类中添加一个类型为CBrush的成员变量m_brs;
m_brs.CreateSolidBrush(RGB(0,0,55));//需要程序使用的背景画刷

并且在CXXXDlg的构造函数中添加一行代码
在CXXXDlg中添加WM_CTLCOLOR消息处理函数
然后在OnCtlColor中写下面的代码:
if(IDC_STATIC_DEMO==pWnd->GetDlgCtrlID())//判断正在绘制的是不是我们需要改变的控件
{
pDC->SetBkMode(TRANSPARENT);//设置透明输出
pDC->SetTextColor(RGB(255,0,0));//设置文字颜色
return m_brs;//用自定义的画刷去绘制背景
}
西贱李杀神
推荐于2017-10-01 · TA获得超过172个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:520万
展开全部
HBRUSH CTestDlg1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
// 判断下是不是你要改的控件ID
if( pWnd->GetDlgCtrlID() == IDC_STATIC_MAX )
{
pDC->SetTextColor(RGB(255,0,0)); //字体颜色
pDC->SetBkColor(RGB(0, 0, 255)); //字体背景色
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2013-09-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4072万
展开全部
设置背景透明后,控件的重绘会触发父窗口的背景重绘,因此会出现闪烁。
这个优化起来会比较困难,其实你都设置为黑色背景也没什么问题吧,这样就不会触发二次重绘了。
追问
如果我把主对话框的背景设置为黑色的话菜单栏项目的一些对话框也会变成黑色,这样那些项目对话框里的文字就看不到了。
追答
可以在绘图区域再套一个静态框,背景黑色。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
任明星Ming
2013-09-16 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1132万
展开全部
我有写博客,里面阐述了如何制作CStatic的自绘皮肤,希望可以给你些参考:
CStatic模仿IPhone泡泡:
http://blog.csdn.net/renstarone/article/details/11491195
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackeagle1
2013-09-17 · TA获得超过133个赞
知道答主
回答量:56
采纳率:100%
帮助的人:10.8万
展开全部
轻轻的飘过 飘过。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式