cformview里可以实现初始对话框和后来创建的对话框转换吗
时间: 2024-04-02 10:33:01 浏览: 17
是的,CFormView可以实现初始对话框和后来创建的对话框之间的转换。您可以使用CFormView的OnInitialUpdate函数来初始化初始对话框,然后在需要时使用Create函数创建新的对话框。您可以使用SetDlgCtrlID函数设置每个对话框的控件ID,以便在需要时可以轻松地访问它们。当您需要切换到不同的对话框时,可以使用SetActiveView函数将当前视图设置为要显示的对话框。
相关问题
formview 里的对话框如何初始化
如果你想在 FormView 中嵌入一个对话框,你可以按照以下步骤进行初始化:
1. 在你的对话框类头文件中添加一个成员变量指向你的对话框,例如:
```
class CMyFormView : public CFormView
{
// ...
protected:
CMyDialog* m_pMyDialog;
};
```
2. 在你的 FormView 类的构造函数中创建你的对话框对象,例如:
```
CMyFormView::CMyFormView()
: CFormView(IDD_MYFORMVIEW)
{
// 创建你的对话框对象
m_pMyDialog = new CMyDialog;
}
```
在上述代码中,ID_MYDIALOG 是你的对话框的资源 ID。
3. 在你的 FormView 类的 OnInitialUpdate() 函数中给你的对话框对象初始化,例如:
```
void CMyFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 初始化你的对话框对象
m_pMyDialog->Create(ID_MYDIALOG, this);
m_pMyDialog->ShowWindow(SW_SHOW);
}
```
在上述代码中,你需要使用 Create() 函数创建你的对话框对象,并将其添加到 FormView 中,然后使用 ShowWindow() 函数显示对话框。
4. 在你的 FormView 类的析构函数中删除你的对话框对象,例如:
```
CMyFormView::~CMyFormView()
{
// 删除你的对话框对象
delete m_pMyDialog;
}
```
通过执行上述步骤,你就可以在 FormView 中嵌入一个对话框,并对其进行初始化了。当然,你还需要在对话框类和 FormView 类中添加其他必要的函数和成员变量来处理用户输入和操作。
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 中嵌入一个对话框,并设置其大小和位置。