继承Cformview 的DIALOG如何初始化调整大小
时间: 2024-03-24 10:40:48 浏览: 71
要初始化调整大小继承自CFormView的对话框,您可以使用以下步骤:
1. 在您的对话框类的OnInitDialog函数中,添加以下代码:
```cpp
CRect rect;
GetClientRect(&rect);
CalcWindowRect(&rect);
SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
```
2. 在您的对话框类的OnSize函数中,添加以下代码:
```cpp
CRect rect;
GetClientRect(&rect);
CalcWindowRect(&rect);
SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
```
这些代码将根据您的对话框的客户区大小计算窗口框架的大小,并将窗口重新定位和调整大小。这将确保您的对话框在初始化和调整大小时总是正确的大小。
相关问题
继承CFORMVIEW的DIALOG怎么初始化
继承 CFormView 的对话框的初始化可以通过以下步骤实现:
1. 在 CFormView 子类的头文件中添加以下构造函数声明:
```c++
public:
MyFormView();
```
2. 在 CFormView 子类的源文件中实现构造函数,调用 CFormView 构造函数并传递资源 ID。
```c++
MyFormView::MyFormView() : CFormView(IDD_MYFORMVIEW)
{
}
```
3. 在对话框类的源文件中实现 OnInitDialog 函数,并将其重写为以下形式:
```c++
BOOL MyDialog::OnInitDialog()
{
BOOL bResult = CDialog::OnInitDialog();
MYFORMVIEW.Create(IDD_MYFORMVIEW, this);
return bResult;
}
```
其中,MYFORMVIEW 是在对话框类的头文件中声明的 CFormView 子类对象。
4. 在对话框类的头文件中添加以下声明:
```c++
protected:
MyFormView MYFORMVIEW;
```
5. 在对话框类的 DoDataExchange 函数中添加以下代码:
```c++
DDX_Control(pDX, IDC_MYFORMVIEW, MYFORMVIEW);
```
其中,IDC_MYFORMVIEW 是包含 CFormView 子类的控件的 ID。
6. 在资源编辑器中添加一个 CFormView 对象,并设置其 ID。
7. 在对话框类的头文件中添加以下声明:
```c++
enum { IDD = IDD_MYDIALOG };
```
其中,IDD 是对话框的资源 ID。
完成上述步骤后,CFormView 子类就会被正确初始化,并显示在对话框中。
创建MFC单文档程序Cformview中初始化了一个Dialog,如何将这个Dialog销毁
要销毁 MFC 单文档程序中的 CFormView 中初始化的 Dialog,可以调用 CFormView 类的 DestroyWindow 函数。在 CFormView 类的析构函数中调用 DestroyWindow 函数可以确保在销毁 CFormView 对象时,同时销毁其初始化的 Dialog。
以下是一个示例代码:
```c++
class CMyFormView : public CFormView
{
public:
CMyFormView() : CFormView(IDD_MY_DIALOG) {}
virtual ~CMyFormView() {}
protected:
virtual void PostNcDestroy()
{
delete this;
}
afx_msg void OnDestroy()
{
CFormView::OnDestroy();
DestroyWindow();
}
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CMyFormView, CFormView)
ON_WM_DESTROY()
END_MESSAGE_MAP()
```
在上面的代码中,我们在 CMyFormView 类中重载了 PostNcDestroy 函数和 OnDestroy 函数。在 PostNcDestroy 函数中,我们使用 delete 关键字销毁 CFormView 对象。在 OnDestroy 函数中,我们先调用 CFormView 类的 OnDestroy 函数,然后调用 DestroyWindow 函数销毁 Dialog。
当 CFormView 对象被销毁时,MFC 会自动调用 PostNcDestroy 函数,从而触发销毁 Dialog 的过程。
阅读全文