cformview里可以实现初始对话框和后来创建的对话框转换吗
时间: 2024-04-02 20:33:01 浏览: 52
是的,CFormView可以实现初始对话框和后来创建的对话框之间的转换。您可以使用CFormView的OnInitialUpdate函数来初始化初始对话框,然后在需要时使用Create函数创建新的对话框。您可以使用SetDlgCtrlID函数设置每个对话框的控件ID,以便在需要时可以轻松地访问它们。当您需要切换到不同的对话框时,可以使用SetActiveView函数将当前视图设置为要显示的对话框。
相关问题
formview 里的对话框如何初始化大小位置
在 FormView 中嵌入一个对话框时,你可以使用以下方法来设置对话框的大小和位置:
1. 在你的 FormView 类的 OnInitialUpdate() 函数中,获取你的对话框对象的大小和位置,例如:
```
void CMyFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 初始化你的对话框对象
m_pMyDialog->Create(ID_MYDIALOG, this);
m_pMyDialog->ShowWindow(SW_SHOW);
// 获取对话框的大小和位置
CRect rect;
m_pMyDialog->GetWindowRect(&rect);
ScreenToClient(&rect);
}
```
在上述代码中,你需要使用 GetWindowRect() 函数获取对话框的屏幕坐标,然后使用 ScreenToClient() 函数将其转换为客户端坐标。
2. 在你的 FormView 类的 OnSize() 函数中,重新设置对话框的大小和位置,例如:
```
void CMyFormView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// 重新设置对话框的大小和位置
CRect rect;
GetClientRect(&rect);
rect.DeflateRect(10, 10);
m_pMyDialog->SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
}
```
在上述代码中,你需要使用 GetClientRect() 函数获取 FormView 的客户端区域,然后使用 SetWindowPos() 函数设置对话框的位置和大小。
通过执行上述步骤,你就可以在 FormView 中嵌入一个对话框,并设置其大小和位置。
阅读全文