MFC对话框调用完OnPaint()函数后调试进去afxstate.cpp里然后出错
OnPaint()函数完后按下一步F10一直进入afxstate.cpp里,在函数AfxWndProcBase(HWNDhWnd,UINTnMsg,WPARAMwPara...
OnPaint()函数完后按下一步F10一直进入afxstate.cpp里,在函数AfxWndProcBase(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
AFX_MANAGE_STATE(_afxBaseModuleState.GetData());
return AfxWndProc(hWnd, nMsg, wParam, lParam);
}
完后显示无可用源。
怎么解决啊。
OnPint函数else里代码:
{
CDialog::OnPaint();
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
CDC dcMem; //定义一个工具箱(设备上下文)
dcMem.CreateCompatibleDC(&dc);///建立关联DC
CBitmap bmpBackground; //位图对象
bmpBackground.LoadBitmap(IDB_BITMAP4); //IDB_BITMAP是你自己的图对应的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap); //建立绑定关系
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); //保存原有CDC对象,并选入新CDC对象入DC
dc.SetStretchBltMode(COLORONCOLOR);//防止bmp图片失真
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
dcMem.SelectObject(pbmpOld);
bmpBackground.DeleteObject();
SetImage();
SetPre();
OnMainBack();
//在对话框上显示5张可选图
OnP1(); OnP2(); OnP3(); OnP4(); OnP5();
} 展开
{
AFX_MANAGE_STATE(_afxBaseModuleState.GetData());
return AfxWndProc(hWnd, nMsg, wParam, lParam);
}
完后显示无可用源。
怎么解决啊。
OnPint函数else里代码:
{
CDialog::OnPaint();
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
CDC dcMem; //定义一个工具箱(设备上下文)
dcMem.CreateCompatibleDC(&dc);///建立关联DC
CBitmap bmpBackground; //位图对象
bmpBackground.LoadBitmap(IDB_BITMAP4); //IDB_BITMAP是你自己的图对应的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap); //建立绑定关系
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); //保存原有CDC对象,并选入新CDC对象入DC
dc.SetStretchBltMode(COLORONCOLOR);//防止bmp图片失真
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
dcMem.SelectObject(pbmpOld);
bmpBackground.DeleteObject();
SetImage();
SetPre();
OnMainBack();
//在对话框上显示5张可选图
OnP1(); OnP2(); OnP3(); OnP4(); OnP5();
} 展开
1个回答
展开全部
调试时,可以使用排除法,将可疑的语句先注释掉,直到执行成功为止,然后再一条条加上,看到底是哪条语句引发了错误。
你这里代码比较多,建议先将dcMem.SelectObject(pbmpOld); 以下的语句注释掉看看。还有将CDialog::OnPaint();这句先注释掉。这里已经不需要基类执行OnPaint操作了。
你这里代码比较多,建议先将dcMem.SelectObject(pbmpOld); 以下的语句注释掉看看。还有将CDialog::OnPaint();这句先注释掉。这里已经不需要基类执行OnPaint操作了。
更多追问追答
追问
发现我的有5个BUTTON控件,勾上了OwnerDraw属性,运行就出错,不勾中就不会出错,但点击后报错。
追答
http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html
这有篇文章和工程,你对比下哪里没设置对?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询