我想在Dialog上贴上背景图,请问需要在哪个消息中处理!!如果在OnPaint()中处理,有时候会得到的这个消息,比如说,用不规则的窗口在此对话框上移动时,有时话我的对话框不会收到此消息,
而且在OnPaint()中的dc只能用 CPaintDC dc(this);如果用CDC *pDC = GetWindowDC()的话会将上面的button控件也遮盖掉。如果在OnEraseBkgnd(CDC *pDC)中处理的话,
用不规则窗口在对话框上连续快速移动时,上面的button也会出现闪烁,请问,应该如何解决?

解决方案 »

  1.   

    在窗口的OnPaint()函数中,加入如下代码:
      CPaintDC dc(this);
      CRect rect;
            GetClientRect(&rect);//得到窗体的大小
            CDC dcMem; 
            dcMem.CreateCompatibleDC(&dc); 
            CBitmap bmpBackground;
            bmpBackground.LoadBitmap(IDB_BITMAP1);//加载背景图片
            BITMAP bitMap;
            bmpBackground.GetBitmap(&bitMap);
            CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
            dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);参考:http://www.xiaozhou.net/cooldog/blogview.asp?logID=23&cateID=16