vc 创建非模态对话框 示例
时间: 2024-09-13 20:12:02 浏览: 51
在Visual C++中创建非模态对话框,首先需要在资源编辑器中创建一个新的对话框资源。然后,需要编写代码来加载并显示这个对话框,但不阻止父窗口的操作。以下是一个简单的示例代码,演示如何实现非模态对话框:
1. 打开VC++项目资源编辑器,添加一个新的对话框资源。
2. 设计对话框,添加所需的控件,如按钮、编辑框等。
3. 为对话框添加一个类,比如命名为`CMyDialog`,并为每个控件添加控件变量和消息处理函数。
```cpp
// MyDialog.h
class CMyDialog : public CDialog
{
// ... 其他代码 ...
// 控件变量声明
CButton m_button1;
CEdit m_edit1;
// 对话框消息处理函数声明
afx_msg void OnBnClickedButton1(); // 假设有一个按钮用来关闭对话框
DECLARE_MESSAGE_MAP()
};
// MyDialog.cpp
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
// ... 其他消息映射 ...
ON_BN_CLICKED(IDC_MYBUTTON, &CMyDialog::OnBnClickedButton1) // 假设按钮的ID是IDC_MYBUTTON
END_MESSAGE_MAP()
void CMyDialog::OnBnClickedButton1()
{
// 当按钮被点击时,关闭对话框
DestroyWindow();
}
// 在某个父窗口类中,添加代码创建并显示非模态对话框
void CParentWindow::ShowMyDialog()
{
CMyDialog dlg;
dlg.DoModal(); // 对于非模态对话框,我们不调用DoModal(),而是直接创建并显示
// 注意:此处使用Create代替DoModal,并传入父窗口的指针
dlg.Create(CMyDialog::IDD, this); // IDD是对话框资源的ID
dlg.ShowWindow(SW_SHOW); // 显示对话框
}
```
4. 在父窗口类中,实现一个函数来创建并显示非模态对话框。注意,不要使用`DoModal()`方法,因为这会导致模态行为。使用`Create`和`ShowWindow`方法来创建和显示对话框。
需要注意的是,非模态对话框允许用户同时与多个窗口交互,而不会阻塞父窗口或其他窗口。父窗口在创建非模态对话框后,通常会继续执行后续的代码。
阅读全文