麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

基于WTL中使用雙緩沖避免閃爍的解決方法

2020-01-26 16:11:40
字體:
供稿:網(wǎng)友
在自己畫的窗口中,有時(shí)候會(huì)有閃爍現(xiàn)象。為什么會(huì)有閃爍現(xiàn)象呢?其實(shí)是因?yàn)槌绦蛟诋嫶翱跁r(shí)需要用背景色清空顯示區(qū)域,然后再畫。由于這兩者的反差比較大,就會(huì)被人眼睛捕捉到,感覺閃爍。
雙緩沖就是先在內(nèi)存中把圖畫好,然后直接復(fù)制到屏幕上去,這樣的反差就比較小,也就不覺得閃爍了。




WTL中的CDoubleBufferImpl
WTL中有現(xiàn)成的雙緩沖類實(shí)現(xiàn),可以很方便的使用就達(dá)到效果。
CDoubleBufferImpl 在AtlFrame.h中。
1.首先繼承自CDoubleBufferImpl

復(fù)制代碼 代碼如下:

class TCtrl:
        public CWindowImpl< TCtrl>, 
        public WTL::CDoubleBufferImpl<TCtrl>  // 繼承雙緩沖類

2.由于雙緩沖類中已經(jīng)處理了WM_ERASEBKGND 和WM_PAINT消息,所以需要從你的代碼中刪除對(duì)這些消息的處理。然后加上雙緩沖的消息處理即可。
復(fù)制代碼 代碼如下:

 BEGIN_MSG_MAP(TCtrl)
//        MESSAGE_HANDLER(WM_PAINT,        OnPaint)
        CHAIN_MSG_MAP( WTL::CDoubleBufferImpl<TCtrl>)
    END_MSG_MAP()

3.增加一個(gè)DoPaint函數(shù),函數(shù)聲明如下:
復(fù)制代碼 代碼如下:

void DoPaint(CDCHandle dc);

4.將原來OnPaint函數(shù)中的代碼移到DoPaint中,注意原來的CPaintDC需要改用參數(shù)中的CDCHandler
復(fù)制代碼 代碼如下:

void TCtrl::DoPaint( CDCHandle dc )
{
    //CPaintDC dc(m_hWnd);     dc.MoveTo( xx… )}

OK,編譯吧。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产精品久久久久久久久久10秀 | 在线观看国产一区二区三区 | 欧美五月婷婷 | 久久老司机精品视频 | 国产成年人在线观看 | 久久久久国产成人免费精品免费 | 日本看片一区二区三区高清 | 一级黄色片武则天 | 视频一区二区精品 | sese在线视频 | 国内精品伊人久久久久网站 | 成年人高清视频在线观看 | 国产午夜电影在线观看 | 91一区二区三区久久久久国产乱 | 国产成人精品一区二区视频免费 | 天堂二区 | 国产精选久久久 | 国产成年人视频网站 | 成码无人av片在线观看网站 | 免费男女视频 | 国产精品夜色视频一级区 | 美女被免费网站在线软件 | 欧美一级淫片免费视频黄 | 毛片视频网站在线观看 | 国产xxxx免费 | 毛片在线视频观看 | 亚洲第一成人久久网站 | 久久美女色视频 | 国内精品国产三级国产a久久 | 91av国产在线| 99最新地址| 看免费黄色大片 | 最新黄色av| 国产寡妇xxxxxxxx性开放 | 日本精品视频一区二区三区四区 | av在线播放电影 | 久久精品国产久精国产 | 在线视频1区 | av电影在线观看网站 | 亚洲第一激情网 | 午夜激情视频免费 |