永发信息网

MFC对话框调用完OnPaint()函数后调试进去afxstate.cpp里然后出错

答案:2  悬赏:0  手机版
解决时间 2021-03-08 15:42
  • 提问者网友:难遇难求
  • 2021-03-07 16:19
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();
}
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-03-07 17:23
调试时,可以使用排除法,将可疑的语句先注释掉,直到执行成功为止,然后再一条条加上,看到底是哪条语句引发了错误。

你这里代码比较多,建议先将dcMem.SelectObject(pbmpOld); 以下的语句注释掉看看。还有将CDialog::OnPaint();这句先注释掉。这里已经不需要基类执行OnPaint操作了。
全部回答
  • 1楼网友:空山清雨
  • 2021-03-07 18:41
期待看到有用的回答!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯