方案1:

我昨天刚在csdn上解决了这个问题,不是双缓冲和WS_CLIPCHILDREN还有背景擦出什么的问题,就是在你重画的时候要去掉这些控件(按钮什么的)区域,

闪屏是因为窗口大小发生改变时,由于控件移动会有重影,因此对话框会去擦除背景,包括控件遮挡的地方,但是控件自己会去刷新,因此,解决方案可以在擦背景时去除控件位置背景的擦除。

关键代码如下,可以在onpaint 或者OnEraseBkgnd里面加入,灵活使用吧 
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rect); 

ScreenToClient(&rect); 

pDC->ExcludeClipRect (&rect);//该函数可以使这部分区域不被画,你可以再试试看下 

 

需要把主对话框上的CLIPCHILDREN选项去掉,就好了,有CLIPCHILDREN这个选项就会闪背景,嘎嘎原因吗我也不知道,只知道这么做管用。。。。

 

方案2:

Onpaint函数中:

ModifyStyle(1, WS_CLIPCHILDREN);//对话框不需要去刷新控件背景

Onsize函数中:

ModifyStyle(WS_CLIPCHILDREN, 1);//窗口大小改变时需要去刷新背景