Cformview Onsize一直再函数里出不去
时间: 2023-11-21 18:05:35 浏览: 41
CFormView::OnSize() 是一个重要的消息处理函数,负责处理窗口大小变化的消息。如果在该函数中出现问题,可能是由于代码逻辑错误或者其他原因导致的。以下是一些可能导致无法退出OnSize函数的原因:
1. 死循环:如果在OnSize函数中出现了死循环,那么程序会一直卡在该函数中,无法正常退出。
2. 锁死:如果在OnSize函数中使用了某些资源,但是没有正确释放,可能会导致该资源被锁死,导致函数无法退出。
3. 异常:如果在OnSize函数中出现了异常,可能会导致程序崩溃或者无法正常退出。
建议您检查代码逻辑,确保没有死循环和资源锁死等问题,并且可以在代码中加入调试信息,以便更好地定位问题所在。
相关问题
Cformview Onsize 用法
CFormView::OnSize() 函数是在窗口大小改变时被调用的方法。它通常被用来重新布局和调整窗口中的控件大小。在 MFC 中,CFormView 类是用来创建带有表单的视图的。因此,当窗口大小改变时,CFormView::OnSize() 函数通常被用来重新布局和调整表单视图中的控件大小和位置,以适应新的窗口大小。
以下是 CFormView::OnSize() 函数的用法示例:
```
void CMyFormView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// 重新调整表单视图中的控件大小和位置
// 根据新的窗口大小
// ...
}
```
在这个示例中,当窗口大小改变时,CMyFormView::OnSize() 函数会调用基类 CFormView::OnSize() 函数来处理默认的窗口大小改变逻辑。然后,它会重新调整表单视图中的控件大小和位置,以适应新的窗口大小。
Cformview在哪个函数里加载dialog的
CFormView类的窗口是在CFormView::OnInitialUpdate()函数中创建的,该函数在窗口第一次显示之前被调用。在OnInitialUpdate()函数中,会调用CFormView::DoDataExchange()函数将控件和变量进行关联,并且调用CFormView::UpdateData()函数将变量的值更新到控件上。
如果需要在CFormView中加载Dialog资源,可以重载CFormView::OnInitialUpdate()函数,并在该函数中调用CDialog::Create()函数来创建Dialog窗口。例如:
```c++
void CMyFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 加载Dialog资源
m_pDialog = new CMyDialog();
m_pDialog->Create(IDD_MY_DIALOG, this);
// 将Dialog窗口添加到FormView中
CWnd* pWnd = GetDlgItem(IDC_MY_PLACEHOLDER);
CRect rect;
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
m_pDialog->SetWindowPos(&wndTop, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
}
```
这里的m_pDialog是CMyDialog类的成员变量,用于保存Dialog窗口的指针。在OnInitialUpdate()函数中,我们先创建了一个CMyDialog对象,并调用Create()函数创建Dialog窗口。然后,我们使用GetDlgItem()函数获取一个在FormView中用于占位的控件,将它的位置和大小作为Dialog窗口的位置和大小,并将Dialog窗口移到该位置。最后,我们调用SetWindowPos()函数将Dialog窗口设置为在FormView中最上层,并显示出来。