窗口最大化后屏幕闪烁
我的是基于对话框的程序,双击标题栏后,全屏显示,但是中间会闪屏一下。我的代码是这样写的
在onsize里面。
UpdateWindow();
CRect rect;
GetClientRect(&rect);
InvalidateRect(rect,true);
SendMessage(WM_PAINT);
不知道怎么改写。大侠帮忙啊!
[解决办法]
楼主,建议你用双缓存来解决这类问题。
void CSDlg::OnPaint()
{
CPaintDC dc(this);
//add code
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(&dc);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
CRect rect;
GetWindowRect(&rect);
int nWidth = rect.Width();
int nHeight = rect.Height();
MemBitmap.CreateCompatibleBitmap(&dc,nWidth,nHeight);
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
Cards.SelectObject(&beijing);
CRect rect2;
GetClientRect(&rect2);
BITMAP bmp;
beijing.GetBitmap(&bmp);
MemDC.StretchBlt(0,0,rect2.Width(),rect2.Height(),&Cards,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
}
这是我以前项目里面的代码,你最好还是在网上搜一下,系统学一下,再写!
[解决办法]