hur.cn - 华软网

 热门搜索

关于自绘 CStatic控件问题

  作者:未知    来源:网络    更新时间:2011/1/12

我在 DrawItem()中的代码以下

C++">
CDC* pDC=GetDC();
CRect r;
GetClientRect(&r);
CFont* oldFont=pDC->SelectObject(&m_font);
pDC->SetTextColor(RGB(0,0,0xff));
CSize cs=pDC->GetTextExtent(m_szShowText);

CRect rleft;
rleft.left=r.left;
rleft.right=r.right;
rleft.top=(r.Height()-cs.cy)/2;
rleft.bottom=rleft.top+cs.cy;
pDC->DrawText(m_szShowText,&rleft,DT_LEFT);
pDC->SelectObject(oldFont);
ReleaseDC(pDC);

当统一个控件先显示一个字符串 AAAAAAAAAAAAAAAAAAAAA
然后又显示字符串 BBBBB的时候,正常应该只显示5个B 然则,显示为 BBBBBAAAAAAAAAAAAAAA
很郁闷..我想这个应该是刷新的问题,然则我也调用了
Invalidate();
结果照旧这样,很是郁闷

---华软 网友回答---
Invalidate(TRUE);擦除背景试试,第二次输出的区域比第一次的小,可能背景没擦掉

---华软网友回复---
哎,适才试了下自己的想法,结果自己相法正确
要刷新一次主界面....
如果不刷新主界面呢?
---华软网友回复---
直接setwindowtext就行吧
---华软网友回复---
引用 2 楼 lfs09 的回复:
哎,适才试了下自己的想法,结果自己相法正确
要刷新一次主界面....
如果不刷新主界面呢?

那你在DrawText显示文字之前,先用背景刷一遍,然后再DrawText文字
---华软网友回复---
不耍主界面,就用你的背景画刷,把以前DrawText的地方局部绘制为背景致。
---华软网友回复---
4 5楼都正确,

setwindowtext 控制是自绘画的哦,用这个函数能够啊?
不用自己显示文字?
控制显示格式等.一堆的      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。