java 输出汉字,输出汉字的时候出现闪烁的问题

输出汉字的时候出现闪烁的问题 - 故障解答 - 电脑教程网

输出汉字的时候出现闪烁的问题

日期:2007-06-12   荐:
输出汉字的时候出现闪烁的问题我是用CDC::TEXTOUT输出汉字,在ONCHAR中接受到字符后,在相应的位置InvalidateRect(),在ONDRAW中先画整个背景,再在相应的位置输出ONCHAR中得到的字符,在输出英文和标点的时候很正常,但是输入汉字就回出现闪烁,奇怪的是,我使用 SENDMESSAGE(WM_CHAR,汉字,0)却没有出现闪烁的现象,请高手指教,输入汉字的时候不可能一次一个键输入,每次击键都会引发ONCHAR而导致InvalidateRect,所以会有闪烁!呵呵看看你刷新(要刷新举行的计算)和绘画的代码。看不出有重画背景的必要输入汉字的时候不是每次都引发ONCHAR的,使用输入法,输入几个汉字就会引发几次ONCHAR,重画背景是为了擦除原来的汉字ONDRAW代码如下:先用IPICTURE接口输出背景,然后输出文字pDC->SetBkMode(TRANSPARENT);int iDoclen=GetDocument()->Curpage->csWords.GetLength();if(iDoclen>0){CPoint Wordpos;for(i=0;i<iDoclen;i ){ Wordpos=GetDocument()->Curpage->m_Wordpos.GetAt(i); CString tempstr=GetDocument()->Curpage->csWords.GetAt(i);if(0x0D==tempstr) continue; pDC->TextOut(Wordpos.x left,Wordpos.y-lTextHeight-m_Bottomblank,tempstr);/*CRect rect;rect.left=Wordpos.x left;rect.top=Wordpos.y-lTextHeight-m_Bottomblank;rect.right=Wordpos.x left 16;rect.right=Wordpos.y-m_Bottomblank;pDC->DrawText(tempstr,rect,DT_BOTTOM);*/}}不要都重画吧计算上一次输出的位置,下次输出时接着后面输出应该可以吧应该重画,不然最小后在打开不是就都没有了吗?我觉得闪烁不是效率的问题,因为使用SENDMESSAGE输入汉字也要调用这段代码来显示汉字,没有闪烁TextOut的时候不需要重画。即在WM_CHAR消息处理的时候不需要InvalidateRect。关于输入的字符可以保存在一个全局变量中,每次添加,不需要计算位置。如果是使用DrawText那么可以使用GetTextExtentPoint32获得字体的高度和宽度,然后计算!具体的参考MSDN。为什么不需要INVALIDATERECT呢,难道更新整个VIEW,那样闪的更严重了,用双缓冲?gt;>?!--/9team
标签: