MFC程序在DEBUG生成的时候报错,RELEASE生成的时候又没错了??

陈清平 2009-06-13 03:31:27
是一个对话框程序,主要是给对话框做一个背景,还有一些按钮,也给按钮做成位图按钮了,
按钮是这样加的。。。
在 CxxDlg::OnInitDialog 函数中
m_aBmpBtn.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);
m_aBmpBtn.SubclassDlgItem(IDC_BUTTON1,this); (1)
m_aBmpBtn.SizeToContent();


对话框是
在 CxxDlg::OnPaint() 函数中:
else //改写else分支
{
//CDialog::OnPaint();
CPaintDC dc(this); (2)
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);

CRect rect;
GetClientRect(&rect);

BITMAP bitMap;
m_bmpBackground.GetBitmap(&bitMap);

CBitmap *pbmpOld=dcMem.SelectObject(&m_bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);

编译的时候都没有错误,就是DEBUG生成的时候有错,在(1)(2)处的断点报错,RELEASE的时候又没错,不知道是什么原因....
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈清平 2009-06-16
  • 打赏
  • 举报
回复
错了,是m_aBmpBtn.SubclassDlgItem(IDC_BUTTON1,this); 这句...
陈清平 2009-06-16
  • 打赏
  • 举报
回复
m_aBmpBtn是对应的按钮的CBitmapButton变量,把下面这句关联代码注释就通过了,谢谢各位!非常感谢!!
m_aBmpBtn.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);
Fireway2008 2009-06-13
  • 打赏
  • 举报
回复
1. m_aBmpBtn.SubclassDlgItem(IDC_BUTTON1,this); (1)

如果你的m_aBmpBtn 已经在classWizard 内和某个控件绑定了,那么这句就没必要了。
而且,最后放在m_aBmpBtn.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2); 之前。


2.CPaintDC dc(this); (2)
改写分支后, 前边的if判断内的代码都可以删掉。

具体问题还得去调适了才知道
youzhipeng 2009-06-13
  • 打赏
  • 举报
回复
我好想知道lz的为什么错误了?

arong1234 2009-06-13
  • 打赏
  • 举报
回复
这一般意味着你程序有“显然”的错误,而不是说release版本好,因为ASSERT总是检查一些非常常见的错误的
对于1:你必须确保,在调用那行代码时,m_hWnd必须为NULL
如果不是这种错误,你应该看看调用堆栈,看看ASSERT到底在检查啥
对于2:不知道你什么错误,代码似乎没问题,你要确保不要在对话框创建前调用OnPaint应该就没问题啊(实际上你永远不应该主动调用OnPaint

建议楼主还是看看call stack,看看到底在ASSERT什么
参考一下:
http://blog.vckbase.com/arong/archive/2009/06/01/4231.html
ccpaishi 2009-06-13
  • 打赏
  • 举报
回复
ASSERT断言release下没有作用
DavidHsing 2009-06-13
  • 打赏
  • 举报
回复
正常。
因为 _DEBUG 的时候有 ASSERT()

你应该在 debug 出错的时候点“重试”,就会在中断的地方停下来,
然后仔细检查那附近的代码。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧