求问关于MFC 新建窗口中控件moveWindow出现断言错误的问题

lishi-1991 CSDN会员 lishi-1991 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在一个窗口A中新建一个窗口B;创建方法如下:
mDlg.Create(IDD_DIALOG_2); 
mDlg.initPlayerDialog();
mDlg.ShowWindow(SW_HIDE);

然后由A窗口的按钮点击事件显示窗口B,触发部分如下:
mDlg.ShowWindow(SW_SHOW);

在B窗口onsize函数如下:
void mDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if(mGroup[0].GetSafeHwnd()){
this->GetWindowRect(&mDlgRect);
int dialogWidth = mDlgRect.Width();
int dialogHeight = mDlgRect.Height();
mGroup[0].MoveWindow(5,5,dialogWidth-80,dialogHeight-45,true);
mGroup[0].GetWindowRect(&mGroupRect[0]);
ScreenToClient(mGroupRect[0]);
}
}

现在问题是B窗口能够正常创建和显示,但是一旦B窗口尺寸发生变化触发onSize函数就会发生如下断言错误:
econd Chance Assertion Failed: File f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wingdi.cpp, Line 1119

调试后发现如果 MoveWindow函数改成
mGroup[0].MoveWindow(5,5,dialogWidth-80,dialogHeight-45,false);
,即窗口不重画就不会触发断言,但是这样控件就无法自适应窗口改变了。
想问问各位有没有遇到过这个问题,该怎么解决呢
谢谢大家了
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
lishi-1991 CSDN会员
界面 15,976 成员 115,866 内容