主对话框弹不出来,断点在INT_PTR nResponse = dlg.DoModal();处,望高手解答啊,能解决追加分数

对话框弹不出来,跟踪进去发现问题出现在INT_PTRnResponse=dlg.DoModal();再跟进去{ASSERT(::IsWindow(m_hWnd));::G... 对话框弹不出来,跟踪进去发现问题出现在INT_PTR nResponse = dlg.DoModal();再跟进去 { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }

在initDialog函数中加入如下代码出现了该问题
//**********************************************************************************************
//对话框按比例缩放
CRect rect;
::GetWindowRect(m_hWnd,&rect);
ScreenToClient(rect);
m_nDlgWidth = rect.right - rect.left;
m_nDlgHeight = rect.bottom - rect.top;

//计算分辨率
m_nWidth = GetSystemMetrics(SM_CXSCREEN);
m_nHeight = GetSystemMetrics(SM_CYSCREEN);

//计算放大倍数
m_Multiple_width = float(m_nWidth)/float(m_nDlgWidth);
m_Mutiple_heith = float(m_nHeight)/float(m_nDlgHeight);
change_flag=TRUE;//这个是成员变量bool形,用来判断onsize执行时oninitdlg是否已经执行了

//************************************************************************************************
问题重新定位了,问题出现在
void CCloudDemoDlg::ReSize(int nID)//通过控件的ID依次改变每个控件的大小
{
CRect Rect;
GetDlgItem(nID)->GetWindowRect(Rect); //执行到这一步后不能继续往下执行
ScreenToClient(Rect);
//计算控件左上角点
CPoint OldTLPoint,TLPoint;
OldTLPoint = Rect.TopLeft();
TLPoint.x = long(OldTLPoint.x *m_Multiple_width);
TLPoint.y = long(OldTLPoint.y * m_Mutiple_heith );

//计算控件右下角点
CPoint OldBRPoint,BRPoint;
OldBRPoint = Rect.BottomRight();
BRPoint.x = long(OldBRPoint.x *m_Multiple_width);
BRPoint.y = long(OldBRPoint.y * m_Mutiple_heith );
//移动控件到新矩形

Rect.SetRect(TLPoint,BRPoint);
GetDlgItem(nID)->MoveWindow(Rect,TRUE); }
展开
 我来答
bhtzu
2013-01-15 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4080万
展开全部
GetDlgItem(nID)->GetWindowRect(Rect); //执行到这一步后不能继续往下执行
试试这样改一下:
CWnd * pWnd = GetDlgItem(nID);
if(NULL==pWnd) return;
pWnd->GetWindowRect(Rect);
猫在团19
推荐于2018-04-10 · 超过18用户采纳过TA的回答
知道答主
回答量:76
采纳率:66%
帮助的人:21.1万
展开全部
CRect Rect;
GetDlgItem(nID)->GetWindowRect(Rect); //执行到这一步后不能继续往下执行
ScreenToClient(Rect);

你这个基本函数都用错了,根本就弄不对,必须得需要对象的地址,
GetDlgItem(nID)->GetWindowRect(&Rect);
ScreenToClient(&Rect);
还得检查前面的关于这两个函数的用法,别用错了,再调试一下值到底传递过去了没有
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式