VS2008下release的结果与debug的结果不同

ShiningPig 发布于 2013/05/28 20:57
阅读 1K+
收藏 0

小女子用MFC编一个有绘图功能的界面,在debug下是正确的,但是release下结果就不一样了,具体如下:

我在对话框中开了个窗口将数据绘制出来,绘制的窗口背景设置为黑色,并绘出绿色的网格线和黄色的label。在debug下运行后是可以显示出网格和label的,然后在release下就一片黑了……

背景是用FillSolidRect这个函数填充的颜色,而网格线和label是在onpaint里调用自己定义的函数画的。自己觉得问题应该就出在自定义的这两个函数里,其中绘制网格的函数如下

void C2DPushGraph::internal_DrawGrid( CDC &dc, CRect& rect)
{
 /* Draw the grid overlay.
 
 We use rect.left as our x offset instead of zero because
 if m_bShowMinMax is true, then rect.left is set to the
 first pixel after the labels. */

 CPen GridPen( PS_SOLID, 1, m_crGridColor );
 CPen *pOldPen = dc.SelectObject(&GridPen);


 for (int n = rect.Height()-1; n >= 0; n -= m_nGridSize)
 {
  dc.MoveTo(rect.left, n);
  dc.LineTo(rect.right, n);
 }
  
 for (int n = rect.left + m_nMoveOffset; n < rect.right; n += m_nGridSize) // add it here James Del n
 {
  if (n < rect.left)
  {
   continue;
  }

  dc.MoveTo(n, 0);
  dc.LineTo(n, rect.Height());
 }

 dc.SelectObject(pOldPen);
 GridPen.DeleteObject();
}

 

初学MFC,对这样的问题完全没头绪呀~~~还请各位大侠赐教!!小女子不胜感激!

加载中
0
ShiningPig
ShiningPig

参照网上资料做了如下环节的修改,就成功了。

打开project->properties

1. linker->debugging

2.c/c++->general

3.c/c++->optimization

 

然后再用release,就能调试,而且直接运行也能出和debug一样的结果啦~

不过其中原理我还不是很清楚,还望各位大侠赐教!

0
Midnight
Midnight
小女子.....  博同情吗?
ShiningPig
ShiningPig
那下次写……女汉子?
0
习总
习总
怎么证明是小女子呢?
ShiningPig
ShiningPig
哈哈~这个问题提的相当好呢
0
平原君
平原君
可以release下调试看看,代码走的路线对不对
0
南湖船老大
南湖船老大
怎么证明是小女子呢?
0
mickelfeng
mickelfeng
怎么证明是小女子呢?
0
mental
mental
问题应该不在这函数,可能在onpaint, debug和release一区别就是变量的初化值,变量一定要给初始化值
ShiningPig
ShiningPig
刚才试了,没效果呃。onpaint基本没有啥自己编的代码,就是直接调用了CDialog的onpaint。
ShiningPig
ShiningPig
好的,我试试!
0
地瓜儿
地瓜儿

引用来自“ShiningPig”的答案

参照网上资料做了如下环节的修改,就成功了。

打开project->properties

1. linker->debugging

2.c/c++->general

3.c/c++->optimization

 

然后再用release,就能调试,而且直接运行也能出和debug一样的结果啦~

不过其中原理我还不是很清楚,还望各位大侠赐教!

知道为啥debug为什么会产生pdb格式文件嘛  网上查查就目标了、、、你配置过配置库,或者对MS的IDE有些研究就目标了
ShiningPig
ShiningPig
恩恩,多谢大侠指点~!刚刚上手,还不太明白个中道理
0
感冒九十九
感冒九十九
我是来看妹子的我会乱说?
返回顶部
顶部