Debug和release两个版本运行的结果不一样,怎么办。

蚂蚁搬豆 2013-05-08 01:16:37
在debug下getWindowRect后算出来的控件大小是842,14,598,13;在release下控件的大小是32228,535,32036,698怎么回事
...全文
337 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
水晶灯 2013-11-18
  • 打赏
  • 举报
回复
我也遇到了同样的问题,请问解决了吗?
天涯洪七公 2013-05-09
  • 打赏
  • 举报
回复
得把窗体初始化一下看下,窗体和控件大小都固定了 就变不了了
蚂蚁搬豆 2013-05-08
  • 打赏
  • 举报
回复
为什么两个版本下的cx和cy的值不一样呢。谁给指导下啊,很急!!!!
蚂蚁搬豆 2013-05-08
  • 打赏
  • 举报
回复
引用 13 楼 tiger9991 的回复:
楼主获取有问题。 窗体不存在也获取。 判断得重写
怎么弄?
傻X 2013-05-08
  • 打赏
  • 举报
回复
楼主获取有问题。 窗体不存在也获取。 判断得重写
zgl7903 2013-05-08
  • 打赏
  • 举报
回复
用 GetClientRect 获取高和宽
满衣兄 2013-05-08
  • 打赏
  • 举报
回复
用outputdebugstring试试,是不是打印了多次
蚂蚁搬豆 2013-05-08
  • 打赏
  • 举报
回复
引用 8 楼 yfqvip 的回复:
方法一: 加个变量,bool m_binit; 构造函数中初始化m_binit=false; 在oninitlizedialog中m_binit=true; OnSize中if(m_binit){....} 方法二: OnSize中 if(pWnd&&IsWindow(pWnd->m_hWnd)){...}
没效果,主要是debug下和release下的cx,cy的值不一样。
蚂蚁搬豆 2013-05-08
  • 打赏
  • 举报
回复
引用 6 楼 dahaiI0 的回复:
计算rect的时候把m_rect的值也打印出来看下
m_rect的值在两个模式下是一样的。
满衣兄 2013-05-08
  • 打赏
  • 举报
回复
方法一: 加个变量,bool m_binit; 构造函数中初始化m_binit=false; 在oninitlizedialog中m_binit=true; OnSize中if(m_binit){....} 方法二: OnSize中 if(pWnd&&IsWindow(pWnd->m_hWnd)){...}
蚂蚁搬豆 2013-05-08
  • 打赏
  • 举报
回复
引用 3 楼 sha_jinhao 的回复:
if(pWnd->m_hWnd)
什么意思?
dahaiI0 2013-05-08
  • 打赏
  • 举报
回复
计算rect的时候把m_rect的值也打印出来看下
  • 打赏
  • 举报
回复
jimette 2013-05-08
  • 打赏
  • 举报
回复
if(pWnd->m_hWnd)
蚂蚁搬豆 2013-05-08
  • 打赏
  • 举报
回复
引用 1 楼 yfqvip 的回复:
可能是变量没有初始化,检查一下
初始化了,代码如下:
void CDataReportDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here

// 	if (m_infoList.GetSafeHwnd())
// 	{
//         m_infoList.MoveWindow(0,0,cx,cy);
// 	}
 
	CWnd *pWnd; 

    pWnd = GetDlgItem(IDC_infoList);     //获取控件句柄
	CRect rect;   //获取控件变化前大小
    if(nType==1) return;   //如果是窗体最小化则什么都不做
    if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
    {

      pWnd->GetWindowRect(&rect);
      ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
      rect.right=rect.right*cx/m_rect.Width();
	  rect.left=rect.left*cx/m_rect.Width();
      rect.bottom=rect.bottom*cy/m_rect.Height();
	  rect.top=rect.top*cy/m_rect.Height();

	  CString a,b,c,d;
	  a.Format("%d",rect.right);
	  b.Format("%d",rect.left);
	  c.Format("%d",rect.bottom);
	  d.Format("%d",rect.top);
	  MessageBox(a+" "+b+" "+c+" "+d);
      pWnd->MoveWindow(rect);//设置控件大小
    }
	GetWindowRect(&m_rect);
}
满衣兄 2013-05-08
  • 打赏
  • 举报
回复
可能是变量没有初始化,检查一下

15,979

社区成员

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

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