mfc实现一个类调用另一个类的界面并显示
时间: 2024-05-04 12:19:02 浏览: 23
可以通过以下步骤来实现:
1. 在 MFC 应用程序中创建两个类,分别为 ClassA 和 ClassB。
2. 在 ClassA 中添加一个按钮控件,并在按钮的 Click 事件中调用 ClassB 的界面。
3. 在 ClassB 中设计一个界面,并在其构造函数中初始化控件。
4. 在 ClassA 的按钮 Click 事件中创建 ClassB 的实例,并调用其 DoModal() 方法显示界面。
下面是示例代码:
ClassA.h:
```cpp
#pragma once
class ClassA : public CDialogEx
{
public:
ClassA(CWnd* pParent = nullptr);
enum { IDD = IDD_CLASSA_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
virtual BOOL OnInitDialog();
afx_msg void OnBtnShowClassB();
DECLARE_MESSAGE_MAP()
};
```
ClassA.cpp:
```cpp
#include "ClassA.h"
#include "ClassB.h"
ClassA::ClassA(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_CLASSA_DIALOG, pParent)
{
}
void ClassA::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BOOL ClassA::OnInitDialog()
{
CDialogEx::OnInitDialog();
return TRUE;
}
void ClassA::OnBtnShowClassB()
{
ClassB dlg;
dlg.DoModal();
}
BEGIN_MESSAGE_MAP(ClassA, CDialogEx)
ON_BN_CLICKED(IDC_BTN_SHOW_CLASSB, &ClassA::OnBtnShowClassB)
END_MESSAGE_MAP()
```
ClassB.h:
```cpp
#pragma once
class ClassB : public CDialogEx
{
public:
ClassB(CWnd* pParent = nullptr);
enum { IDD = IDD_CLASSB_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
};
```
ClassB.cpp:
```cpp
#include "ClassB.h"
ClassB::ClassB(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_CLASSB_DIALOG, pParent)
{
}
void ClassB::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BOOL ClassB::OnInitDialog()
{
CDialogEx::OnInitDialog();
return TRUE;
}
BEGIN_MESSAGE_MAP(ClassB, CDialogEx)
END_MESSAGE_MAP()
```
在上述示例代码中,ClassA 中添加了一个按钮 IDC_BTN_SHOW_CLASSB。当按钮被点击时,会创建 ClassB 的实例并显示它的界面。ClassB 中的界面可以通过添加控件来实现。注意,在 ClassA 中创建 ClassB 的实例时,使用的是 DoModal() 方法,这会使 ClassB 的界面以模态的方式显示,直到用户关闭界面后才会返回 ClassA。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)