求问关于MFC 新建窗口中控件moveWindow出现断言错误的问题
我在一个窗口A中新建一个窗口B;创建方法如下:
然后由A窗口的按钮点击事件显示窗口B,触发部分如下:
在B窗口onsize函数如下:
现在问题是B窗口能够正常创建和显示,但是一旦B窗口尺寸发生变化触发onSize函数就会发生如下断言错误:
调试后发现如果 MoveWindow函数改成
想问问各位有没有遇到过这个问题,该怎么解决呢
谢谢大家了
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);,即窗口不重画就不会触发断言,但是这样控件就无法自适应窗口改变了。想问问各位有没有遇到过这个问题,该怎么解决呢
谢谢大家了
...全文
相关推荐
MFC父窗口嵌子窗口实现垂直滚动条
MFC父窗口嵌子窗口实现垂直滚动条,子窗口超过客户区时自动添加滚动条
MFC案例教程(手把手教你完成一个MFC案例。)
手把手教你完成一个MFC案例。通过此案例,可以帮助你完成课设及MFC的学习
MFC窗体设计
MFC窗体设计,实现窗体初始化位置,大小
VC常用小技巧--让窗口一启动就最大化
VC常用小技巧--让窗口一启动就最大化,方便我们调整窗口的大小等。
MFC窗体嵌入方法[可运行源码]
本文详细介绍了在MFC中将一个窗体(子窗体)嵌入另一个窗体(父窗体)的方法。首先,通过设置子窗体的属性(如border设为none,Style设为Child)实现基本嵌入功能。接着,针对子窗体需要单独调用且带边框的情况,提供了更灵活的解决方案,包括使用SetParent方法设置父窗体,并通过GetWindowLong和SetWindowLong函数动态修改窗体属性(如取消弹出式窗体属性、标题栏等)。最后,通过MoveWindow或SetWindowPos函数调整子窗体位置和大小。该方法简单实用,解决了子窗体在不同场景下的复用问题。


界面
