解决方案 »
- MFC应用程序在自己在电脑上正常运行,编译后在其他电脑上运行却出现内存不能为Read错误
- GetErrorInfo()获取的是什么对象的IErrorInfo
- 宝宝快下出生了,也来求个名。
- 急!!!!!!急求VC中打开 WRL 文件的程序!想在VC中利用wrl文件中的数据,但是打不开wrl文件!有谁能帮上忙??立马给分!!!!!!
- 一个我非常迷惑的问题?
- COM事件的问题
- 如何给一个软件做一个简单的加密
- 高手帮忙
- 请问MFC程序,在右上角多一个按钮出来,点下去始终窗口置顶,弹起来恢复默认状态是怎么样做出来的?
- Oracle Object for OLE难道就是很慢?
- 进制转化问题
- 列表框LBN_SELCHANGE的问题
将OnPaint中的绘图代码独立封装成一个函数,CDC作为参数。然后在OnPaint中调用这个函数。另外,在你所有需要刷新的地方,调用这个函数即可,不要用Invalidate之类的函数!
BOOL CdlgPlayerWnds::OnEraseBkgnd(CDC* dc)
{
if(1==m_lViewNumber)
{
RECT rect;
GetParent()->GetClientRect(&rect);
dc=GetDC();
CDC mdc;
mdc.CreateCompatibleDC(dc); HBITMAP hold;
CBitmap cbmp;
cbmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP_NOVEDIO));
hold=(HBITMAP)mdc.SelectObject(&cbmp); BITMAP bmInfo;
GetObject(cbmp, sizeof(BITMAP), (LPBYTE)&bmInfo); //得到图片尺寸 dc->StretchBlt(0,0,rect.right,rect.bottom,&mdc,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);
mdc.SelectObject(&hold); mdc.DeleteDC();
CWnd::ReleaseDC(dc);
DeleteObject(cbmp);
}
return TRUE;
}现在窗口不动的话背景图不闪烁了,但是拉伸窗口背景图还是闪烁啊...而且有其他窗口遮挡这窗口的时候,窗口上就会出现背景图,怎么让遮挡的时候不重绘呢?
BOOL CdlgPlayerWnds::OnEraseBkgnd(CDC* dc)
{
return true;
}BOOL CdlgPlayerWnds::OnPaint()
{
if(1==m_lViewNumber)
{
RECT rect;
GetParent()->GetClientRect(&rect);
CPaintDC dc(this);CDC mdc;
mdc.CreateCompatibleDC(&dc);HBITMAP hold;
CBitmap cbmp;
cbmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP_NOVEDIO));
hold=(HBITMAP)mdc.SelectObject(&cbmp);BITMAP bmInfo;
GetObject(cbmp, sizeof(BITMAP), (LPBYTE)&bmInfo); //得到图片尺寸 dc.StretchBlt(0,0,rect.width(),rect.height(),&mdc,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);
mdc.SelectObject(&hold);
}
你可以在View 里屏蔽掉所有消息,自己来绘图。