常用的解决办法可以通过重载OnCtlColor函数设置背景透明,再返回一个空画刷来解决。
[cpp] view plaincopy
01.if(nCtlColor == CTLCOLOR_STATIC )
02.{
03. pDC->SetBkMode(TRANSPARENT);//设置背景透明
04. pDC->SetTextColor(RGB(255,255,0));//设置字体为黄色
05. return (HBRUSH)::GetStockObject(NULL_BRUSH);
06.}
但这种方法有一个弊端:不能动态更新static控件内容,否则输出的文字会重叠。
对于动态更新问题的解决办法就是将控件背后的对话框图片贴到控件上来,这样就可以实现static控件的动态更新了。
下面将详叙通过CTransparentStatic类来实现static控件动态的透明显示的解决方案,其中在CTransparentStatic类的OnPaint函数中实现了动态更新控件背景图片(即将将控件背后的对话框图片贴到控件上来)。
1、在头文件中为static控件增加一个变量(ID为IDC_STATIC_ELAPSETIME ),并使此变量类型为CTransparentStatic,而不是默认的CStatic
[cpp] view plaincopy
01.CTransparentStatic m_staEelapseTime;
2、在对话框的OnInitDialog函数中设置此控件的字体大小和颜色
[cpp] view plaincopy
01.m_staEelapseTime.SetFont(&m_font1);
02.m_staEelapseTime.SetTextColor(RGB(255,255,0)); //黄色
3、在OnCtlColor函数中设置此控件透明和颜色,并返回一个空画刷。
[cpp] view plaincopy
01.if( pWnd ->GetDlgCtrlID() == IDC_STATIC_ELAPSETIME )
02. {
03. pDC->SetBkMode(TRANSPARENT);//设置背景透明
04. pDC->SetTextColor(RGB(255,255,0));//设置字体为黄色
05. return (HBRUSH)::GetStockObject(NULL_BRUSH);
06.
07. }
注意,第三步必须有,否则动态显示staEelapseTime控件内容时,会先绘制windows默认的static控件,造成控件闪烁,自己试一下就知道了。
通过以上步骤,就可以实现static控件的动态透明显示了,并且连续采样时也不会出现闪烁。
下面是CTransparentStaticl类的源文件和头文件
//CTransparentStatic.h
[cpp] view plaincopy
01.#pragma once
02.
03.
04.// CTransparentStatic
05.
06.class CTransparentStatic : public CStatic
07.{
08. DECLARE_DYNAMIC(CTransparentStatic)
09.public:
10. CDC m_dcBk;
11. CBitmap m_bmpBk;
12. CBitmap* m_pbmpOldBk;
13.int m_nFontsize ;
14. void SetTextColor(COLORREF TextColor);
15. //void SetFont(int nSize) ;
16.
17.
18. COLORREF m_TextColor;
19.public:
20. CTransparentStatic();
21. virtual ~CTransparentStatic();
22.
23.protected:
24. DECLARE_MESSAGE_MAP()
25.public:
26. afx_msg void OnPaint();
27. DWORD SetBk(CDC* pDC);
28.
29.};
// CTransparentStatic.cpp
[cpp] view plaincopy
01.// TransparentStatic.cpp : implementation file
02.//
03.
04.#include "stdafx.h"
05.#include "TransparentStatic.h"
06.
07.
08.// CTransparentStatic
09.
10.IMPLEMENT_DYNAMIC(CTransparentStatic, CStatic)
11.CTransparentStatic::CTransparentStatic()
12.{
13. //TRACE("CTransparentStatic::CTransparentStatic()\n");
14.}
15.
16.CTransparentStatic::~CTransparentStatic()
17.{
18. //TRACE("CTransparentStatic::~CTransparentStatic()\n");
19.}
20.
21.
22.BEGIN_MESSAGE_MAP(CTransparentStatic, CStatic)
23. ON_WM_PAINT()
24.END_MESSAGE_MAP()
25.
26.
27.
28.// CTransparentStatic message handlers
29.
30.void CTransparentStatic::OnPaint()
31.{
32. //TRACE("CTransparentStatic::OnPaint()\n");
33. CPaintDC dc(this); // device context for painting
34.
35. // Where to draw text
36. CRect client_rect;
37. GetClientRect(client_rect);
38.
39. // Get the caption
40. CString szText;
41. GetWindowText(szText);
42.
43. // Get the font
44. CFont *pFont, *pOldFont;
45. pFont = GetFont();
46. pOldFont = dc.SelectObject(pFont);
47.
48.
49. // Map "Static Styles" to "Text Styles"
50.#define MAP_STYLE(src, dest) if(dwStyle & (src)) dwText |= (dest)
51.#define NMAP_STYLE(src, dest) if(!(dwStyle & (src))) dwText |= (dest)
52.
53. DWORD dwStyle = GetStyle(), dwText = 0;
54.
55. MAP_STYLE( SS_RIGHT, DT_RIGHT );
56. MAP_STYLE( SS_CENTER, DT_CENTER );
beijingkaifapiao.fjie.pw;
beijingdaikaifapiao.fjie.pw;
shanghaikaifapiao.fjie.pw;
shanghaidaikaifapiao.fjie.pw;
guangzhoukaifapiao.fjie.pw;
shenzhenfapiao.fjie.pw;
shenzhenkaifapiao.fjie.pw;
jinanfapiao.fjie.pw;
jinankaifapiao.fjie.pw;
jinandaikaifapiao.fjie.pw;
qingdaofapiao.fjie.pw;
qingdaokaifapiao.fjie.pw;
qingdaodaikaifapiao.fjie.pw;
nanjingfapiao.fjie.pw;
nanjingdaikaifapiao.fjie.pw;
wuxifapiao.fjie.pw;
wuxikaifapiao.fjie.pw;
wuxidaikaifapiao.fjie.pw;
suzhoufapiao.fjie.pw;
suzhoukaifapiao.fjie.pw;
suzhoudaikaifapiao.fjie.pw;
zhengzhoufapiao.fjie.pw;
zhengzhoukaifapiao.fjie.pw;
zhengzhoudaikaifapiao.fjie.pw;
shijiazhuangfapiao.fjie.pw;
shijiazhuangkaifapiao.fjie.pw;
shijiazhuangdaikaifapiao.fjie.pw;
hangzhoufapiao.fjie.pw;
hangzhoudaikaifapiao.fjie.pw;
ningbofapiao.fjie.pw;
ningbokaifapiao.fjie.pw;
ningbodaikaifapiao.fjie.pw;
xianfapiao.fjie.pw;
xiankaifapiao.fjie.pw;
xiandaikaifapiao.fjie.pw;
changshafapiao.fjie.pw;
changshakaifapiao.fjie.pw;
changshadaikaifapiao.fjie.pw;
zhongqingkaifapiao.fjie.pw;
zhongqingdaikaifapiao.fjie.pw;
fuzhoufapiao.fjie.pw;
fuzhoukaifapiao.fjie.pw;
fuzhoudaikaifapiao.fjie.pw;
xiamenfapiao.fjie.pw;
xiamenkaifapiao.fjie.pw;
xiamendaikaifapiao.fjie.pw;
tianjinfapiao.fjie.pw;
tianjinkaifapiao.fjie.pw;
tianjindaikaifapiao.fjie.pw;
kunmingfapiao.fjie.pw;
kunmingkaifapiao.fjie.pw;
kunmingdaikaifapiao.fjie.pw;
chengdufapiao.fjie.pw;
chengdukaifapiao.fjie.pw;
chengdudaikaifapiao.fjie.pw;
hefeifapiao.fjie.pw;
hefeikaifapiao.fjie.pw;
hefeidaikaifapiao.fjie.pw;
wuhanfapiao.fjie.pw;
wuhankaifapiao.fjie.pw;
wuhandaikaifapiao.fjie.pw;
dalianfapiao.fjie.pw;
daliandaikaifapiao.fjie.pw;
shenyangfapiao.fjie.pw;
shenyangkaifapiao.fjie.pw;
shenyangdaikaifapiao.fjie.pw;
haerbinfapiao.fjie.pw;
haerbinkaifapiao.fjie.pw;
haerbindaikaifapiao.fjie.pw;
changchunfapiao.fjie.pw;
changchundaikaifapiao.fjie.pw;
taiyuanfapiao.fjie.pw;
taiyuankaifapiao.fjie.pw;
taiyuandaikaifapiao.fjie.pw;
lanzhoufapiao.fjie.pw;
lanzhoukaifapiao.fjie.pw;
lanzhoudaikaifapiao.fjie.pw;
jilinfapiao.fjie.pw;
jilinkaifapiao.fjie.pw;
jilindaikaifapiao.fjie.pw;
nanchangfapiao.fjie.pw;
nanchangkaifapiao.fjie.pw;
nanchangdaikaifapiao.fjie.pw;
guiyangfapiao.fjie.pw;
guiyangkaifapiao.fjie.pw;
guiyangdaikaifapiao.fjie.pw;
nanningfapiao.fjie.pw;
nanningkaifapiao.fjie.pw;
nanningdaikaifapiao.fjie.pw;
haikoufapiao.fjie.pw;
haikoukaifapiao.fjie.pw;
haikoudaikaifapiao.fjie.pw;
jinhuadaikaifapiao.fjie.pw;
wenzhoudaikaifapiao.fjie.pw;
yangzhoudaikaifapiao.fjie.pw;
wulumuqidaikaifapiao.fjie.pw;
qinhuangdaodaikaifapiao.fjie.pw;
cangzhoudaikaifapiao.fjie.pw;
xiningdaikaifapiao.fjie.pw;
huhehaotekaifapiao.fjie.pw;
cangzhoudaikaifapiao.fjie.pw;
cangzhoufapiao.fjie.pw;
cangzhoukaifapiao.fjie.pw;
zhangzhoudaikaifapiao.fjie.pw;
zhangzhoufapiao.fjie.pw;
zhangzhoukaifapiao.fjie.pw;
zhenjiangdaikaifapiao.fjie.pw;
zhenjiangfapiao.fjie.pw;
zhenjiangkaifapiao.fjie.pw;
zhongshandaikaifapiao.fjie.pw;
zhongshanfapiao.fjie.pw;
zhongshankaifapiao.fjie.pw;
zhuhaidaikaifapiao.fjie.pw;
zhuhaifapiao.fjie.pw;
zhuhaikaifapiao.fjie.pw;
huhehaotefapiao.fjie.pw;
huhehaotekaifapiao.fjie.pw;
foshandaikaifapiao.fjie.pw;
foshanfapiao.fjie.pw;
foshankaifapiao.fjie.pw;
huizhoudaikaifapiao.fjie.pw;
huizhoufapiao.fjie.pw;
huizhoukaifapiao.fjie.pw;
jinhuadaikaifapiao.fjie.pw;
jinhuafapiao.fjie.pw;
jinhuakaifapiao.fjie.pw;
taizhoudaikaifapiao.fjie.pw;
taizhoufapiao.fjie.pw;
taizhoukaifapiao.fjie.pw;
luoyangdaikaifapiao.fjie.pw;
luoyangfapiao.fjie.pw;
luoyangkaifapiao.fjie.pw;
qinhuangdaodaikaifapiao.fjie.pw;
qinhuangdaofapiao.fjie.pw;
qinhuangdaokaifapiao.fjie.pw;
quanzhoudaikaifapiao.fjie.pw;
quanzhoufapiao.fjie.pw;
quanzhoukaifapiao.fjie.pw;
tangshandaikaifapiao.fjie.pw;
tangshanfapiao.fjie.pw;
tangshankaifapiao.fjie.pw;
wenzhoudaikaifapiao.fjie.pw;
wenzhoufapiao.fjie.pw;
wenzhoukaifapiao.fjie.pw;
xuzhoudaikaifapiao.fjie.pw;
xuzhoufapiao.fjie.pw;
xuzhoukaifapiao.fjie.pw;
shantoudaikaifapiao.fjie.pw;
shantoufapiao.fjie.pw;
shantoukaifapiao.fjie.pw;
yantaidaikaifapiao.fjie.pw;
yantaifapiao.fjie.pw;
yantaikaifapiao.fjie.pw;
yanchengdaikaifapiao.fjie.pw;
yanchengfapiao.fjie.pw;
yanchengkaifapiao.fjie.pw;
yangzhoudaikaifapiao.fjie.pw;
yangzhoufapiao.fjie.pw;
yangzhoukaifapiao.fjie.pw;
wulumuqidaikaifapiao.fjie.pw;
wulumuqifapiao.fjie.pw;
wulumuqikaifapiao.fjie.pw;
chengdedaikaifapiao.fjie.pw;
chengdefapiao.fjie.pw;
chengdekaifapiao.fjie.pw;
dandongdaikaifapiao.fjie.pw;
dandongfapiao.fjie.pw;
dandongkaifapiao.fjie.pw;
dong莞fapiao.fjie.pw;
dong莞kaifapiao.fjie.pw;
dongyingdaikaifapiao.fjie.pw;
dongyingfapiao.fjie.pw;
dongyingkaifapiao.fjie.pw;
ganzhoudaikaifapiao.fjie.pw;
ganzhoufapiao.fjie.pw;
ganzhoukaifapiao.fjie.pw;
huludaodaikaifapiao.fjie.pw;
huludaofapiao.fjie.pw;
huludaokaifapiao.fjie.pw;
jixidaikaifapiao.fjie.pw;
jixifapiao.fjie.pw;
jixikaifapiao.fjie.pw;
lishuidaikaifapiao.fjie.pw;
lishuifapiao.fjie.pw;
lishuikaifapiao.fjie.pw;
liuzhoudaikaifapiao.fjie.pw;
liuzhoufapiao.fjie.pw;
liuzhoukaifapiao.fjie.pw;
loudidaikaifapiao.fjie.pw;
loudifapiao.fjie.pw;
loudikaifapiao.fjie.pw;
mianyangdaikaifapiao.fjie.pw;
mianyangfapiao.fjie.pw;
mianyangkaifapiao.fjie.pw;
nantongdaikaifapiao.fjie.pw;
nantongfapiao.fjie.pw;
nantongkaifapiao.fjie.pw;
panzhihuadaikaifapiao.fjie.pw;
panzhihuafapiao.fjie.pw;
panzhihuakaifapiao.fjie.pw;
pingdingshandaikaifapiao.fjie.pw;
pingdingshanfapiao.fjie.pw;
pingdingshankaifapiao.fjie.pw;
rizhaodaikaifapiao.fjie.pw;
rizhaofapiao.fjie.pw;
rizhaokaifapiao.fjie.pw;
tianshuidaikaifapiao.fjie.pw;
tianshuifapiao.fjie.pw;
tianshuikaifapiao.fjie.pw;
weihaidaikaifapiao.fjie.pw;
weihaifapiao.fjie.pw;
weihaikaifapiao.fjie.pw;
xiningdaikaifapiao.fjie.pw;
xiningfapiao.fjie.pw;
xiningkaifapiao.fjie.pw;
xianyangdaikaifapiao.fjie.pw;
xianyangfapiao.fjie.pw;
xianyangkaifapiao.fjie.pw;
yinchuandaikaifapiao.fjie.pw;
yinchuanfapiao.fjie.pw;
yinchuankaifapiao.fjie.pw;
yingkoudaikaifapiao.fjie.pw;
yingkoufapiao.fjie.pw;
yingkoukaifapiao.fjie.pw;
zibodaikaifapiao.fjie.pw;
zibofapiao.fjie.pw;
zibokaifapiao.fjie.pw;
zigongdaikaifapiao.fjie.pw;
zigongfapiao.fjie.pw;
zigongkaifapiao.fjie.pw;
beijingzhusufapiao.fjie.pw;
beijingcanyinfapiao.fjie.pw;
jinancanyinfapiao.fjie.pw;
jinanzhusufapiao.fjie.pw;
hefeizhusufapiao.fjie.pw;
hefeicanyinfapiao.fjie.pw;
suzhouzhusufapiao.fjie.pw;
suzhoucanyinfapiao.fjie.pw;
ningbocanyinfapiao.fjie.pw;
ningbozhusufapiao.fjie.pw;
wuxicanyinfapiao.fjie.pw;
wuxizhusufapiao.fjie.pw;
nanjingcanyinfapiao.fjie.pw;
nanjingzhusufapiao.fjie.pw;
changshazhusufapiao.fjie.pw;
changshacanyinfapiao.fjie.pw;
qingdaocanyinfapiao.fjie.pw;
qingdaozhusufapiao.fjie.pw;
zhongqingzhusufapiao.fjie.pw;
zhongqingcanyinfapiao.fjie.pw;
chengduzhusufapiao.fjie.pw;
chengducanyinfapiao.fjie.pw;
shanghaizhusufapiao.fjie.pw;
shanghaidaikaicanyinfapiao.fjie.pw;
haerbincanyinfapiao.fjie.pw;
haerbinzhusufapiao.fjie.pw;
changchunzhusufapiao.fjie.pw;
changchuncanyinfapiao.fjie.pw;
shenyangzhusufapiao.fjie.pw;
shenyangcanyinfapiao.fjie.pw;
zhengzhouzhusufapiao.fjie.pw;
zhengzhoucanyinfapiao.fjie.pw;
nanjingzhusufapiao.fjie.pw;
nanjingcanyinfapiao.fjie.pw;
hangzhouzhusufapiao.fjie.pw;
hangzhoucanyinfapiao.fjie.pw;
kunmingzhusufapiao.fjie.pw;
kunmingcanyinfapiao.fjie.pw;
dalianzhusufapiao.fjie.pw;
daliancanyinfapiao.fjie.pw;
wuhanzhusufapiao.fjie.pw;
wuhancanyinfapiao.fjie.pw;
fuzhoucanyinfapiao.fjie.pw;
fuzhouzhusufapiao.fjie.pw;
guangzhoucanyinfapiao.fjie.pw;
guangzhouzhusufapiao.fjie.pw;
shijiazhuangcanyinfapiao.fjie.pw;
shijiazhuangzhusufapiao.fjie.pw;
xiancanyinfapiao.fjie.pw;
xianzhusufapiao.fjie.pw;
shenzhencanyinfapiao.fjie.pw;
shenzhenzhusufapiao.fjie.pw;
taiyuanzhusufapiao.fjie.pw;
taiyuancanyinfapiao.fjie.pw;
nanchangzhusufapiao.fjie.pw;
nanchangcanyinfapiao.fjie.pw;
guiyangzhusufapiao.fjie.pw;
guiyangcanyinfapiao.fjie.pw;
guangzhoudingefapiao.fjie.pw;
shenzhendingefapiao.fjie.pw;
zhongqingdingefapiao.fjie.pw;
nanjingdingefapiao.fjie.pw;
qingdaodingefapiao.fjie.pw;
shanghaidingefapiao.fjie.pw;
jinandingefapiao.fjie.pw;
shenyangdingefapiao.fjie.pw;
haerbindingefapiao.fjie.pw;
chengdudingefapiao.fjie.pw;
nanningdingefapiao.fjie.pw;
suzhoudingefapiao.fjie.pw;
changchundingefapiao.fjie.pw;
beijingdingefapiao.fjie.pw;
hangzhoudingefapiao.fjie.pw;
ningbodingefapiao.fjie.pw;
xiandingefapiao.fjie.pw;
shijiazhuangdingefapiao.fjie.pw;
zhengzhoudingefapiao.fjie.pw;
wuhandingefapiao.fjie.pw;
tianjindingefapiao.fjie.pw;
taiyuandingefapiao.fjie.pw;
haikoudingefapiao.fjie.pw;
nanjingdingefapiao.fjie.pw;
wuxidingefapiao.fjie.pw;
nanchangdingefapiao.fjie.pw;
kunmingdingefapiao.fjie.pw;
guiyangdingefapiao.fjie.pw;
lanzhoudingefapiao.fjie.pw;
xiningdingefapiao.fjie.pw;
hefeidingefapiao.fjie.pw;
fuzhoudingefapiao.fjie.pw;
xiamendingefapiao.fjie.pw;
shanghaishangpinfapiao.fjie.pw;
shanghaihuiwufapiao.fjie.pw;
shanghaiyunshufapiao.fjie.pw;
shanghaijianzhufapiao.fjie.pw;
shanghaiguanggaofapiao.fjie.pw;
beijingjianzhufapiao.fjie.pw;
beijingshangpinfapiao.fjie.pw;
guangzhoujianzhufapiao.fjie.pw;
guangzhoushangpinfapiao.fjie.pw;
beijingzengzhishuifapiao.fjie.pw;
beijingkaizengzhishuifapiao.fjie.pw;
shanghaizengzhishuifapiao.fjie.pw;
shanghaikaizengzhishuifapiao.fjie.pw;
shanghaidaikaizengzhishuifapiao.fjie.pw;
guangzhouzengzhishuifapiao.fjie.pw;
guangzhoukaizengzhishuifapiao.fjie.pw;
guangzhoudaikaizengzhishuifapiao.fjie.pw;
shenzhenzengzhishuifapiao.fjie.pw;
shenzhenkaizengzhishuifapiao.fjie.pw;
shenzhendaikaizengzhishuifapiao.fjie.pw;
wuhanzengzhishuifapiao.fjie.pw;
wuhankaizengzhishuifapiao.fjie.pw;
wuhandaikaizengzhishuifapiao.fjie.pw;
jinankaizengzhishuifapiao.fjie.pw;
jinandaikaizengzhishuifapiao.fjie.pw;
qingdaozengzhishuifapiao.fjie.pw;
qingdaokaizengzhishuifapiao.fjie.pw;
qingdaodaikaizengzhishuifapiao.fjie.pw;
nanjingzengzhishuifapiao.fjie.pw;
nanjingkaizengzhishuifapiao.fjie.pw;
nanjingdaikaizengzhishuifapiao.fjie.pw;
wuxizengzhishuifapiao.fjie.pw;
wuxikaizengzhishuifapiao.fjie.pw;
wuxidaikaizengzhishuifapiao.fjie.pw;
suzhouzengzhishuifapiao.fjie.pw;
suzhoukaizengzhishuifapiao.fjie.pw;
suzhoudaikaizengzhishuifapiao.fjie.pw;
shenyangzengzhishuifapiao.fjie.pw;
shenyangkaizengzhishuifapiao.fjie.pw;
shenyangdaikaizengzhishuifapiao.fjie.pw;
57. MAP_STYLE( SS_CENTERIMAGE, DT_VCENTER | DT_SINGLELINE );
58. MAP_STYLE( SS_NOPREFIX, DT_NOPREFIX );
59. MAP_STYLE( SS_WORDELLIPSIS, DT_WORD_ELLIPSIS );
60. MAP_STYLE( SS_ENDELLIPSIS, DT_END_ELLIPSIS );
61. MAP_STYLE( SS_PATHELLIPSIS, DT_PATH_ELLIPSIS );
62.
63. NMAP_STYLE( SS_LEFTNOWORDWRAP |
64. SS_CENTERIMAGE |
65. SS_WORDELLIPSIS |
66. SS_ENDELLIPSIS |
67. SS_PATHELLIPSIS, DT_WORDBREAK );
68.
69. // Set transparent background
70. dc.SetBkMode(TRANSPARENT);
71.
72. //解决重影(将对话框的背景图片贴到控件上)
73. CClientDC clDC(GetParent()); //创建其父窗口的客户区DC。由于此处控件的父窗口是对话框,因此就是获取对话框的DC。
74. //相当于GetDC
75. CRect rect;
76. CRect rect1;
77.
78. GetClientRect(rect);//获取本static控件的客户区大小
79. //this->GetClientRect(rect); //省去一个this,this就代表触发wm_paint消息的控件,以下同
80. GetWindowRect(rect1);//获取本static控件在窗口的位置和大小
81. GetParent()->ScreenToClient(rect1);//将本static控件的屏幕座标转换为客户区座标
82.
83. dc.SetTextColor(m_TextColor);//设置字体颜色
84.
85.
86. if (m_dcBk.m_hDC == NULL)
87. {
88. m_dcBk.CreateCompatibleDC(&clDC);
89. m_bmpBk.CreateCompatibleBitmap(&clDC, rect.Width(), rect.Height());
90.
91. m_pbmpOldBk = m_dcBk.SelectObject(&m_bmpBk);
92. m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), &clDC, rect1.left, rect1.top, SRCCOPY);//将clDC的图片copy至m_dcBk
93. //m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), &clDC, 100, 100, SRCCOPY);
94. }
95.
96. dc.BitBlt(0, 0, rect.Width(), rect.Height(), &m_dcBk, 0, 0, SRCCOPY);//将m_dcBk的图片copy至当前dc
97. //解决重影
98.
99.
100. // Draw the text
101. dc.DrawText(szText, client_rect, dwText);
102.
103. // Select old font
104. dc.SelectObject(pOldFont);
105.
106.}