我有一个简单的应用程序,它有一个基于MFC对话框的窗体作为主窗口。现在我需要创建一个表单(基于对话框可以),它将在整个应用程序生命周期中可用。我计划在需要时显示状态信息,并在不需要时隐藏它。如何声明和创建不以模态模式显示的表单,而是像独立的另一种表单一样。主窗体有时可能隐藏在系统托盘中,但状态仍应保留在桌面上。
应用程序创建主对话框表单:
BOOL CpointMFC2App::InitInstance()
{
...
CpointMFC2Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
...
}
主对话框:
#include "stdafx.h"
#include "pointMFC2.h"
#include "Dialog.h"
#include "afxdialogex.h"
// Dialog dialog
IMPLEMENT_DYNAMIC(Dialog, CDialogEx)
Dialog::Dialog(CWnd* pParent /*=NULL*/)
: CDialogEx(Dialog::IDD, pParent)
{
}
Dialog::~Dialog()
{
}
void Dialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(Dialog, CDialogEx)
ON_BN_CLICKED(IDOK, &Dialog::OnBnClickedOk)
END_MESSAGE_MAP()
// Dialog message handlers
BOOL Dialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
SetWindowText(txt);
return TRUE;
}
void Dialog::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
CDialogEx::OnOK();
}
答案 0 :(得分:0)
使用CreateDialog创建对话框。对话框是无模式的,但仍需要一个有效的消息循环。这应该是正常的方式。 您可以隐藏和显示对话框,或者销毁它并随时重新创建它。
还有另一种方法,具体取决于您希望如何使用此对话框。您可以启动第二个UI框架,并在那里启动模态或无模式对话框。即使主线程正忙,此对话框也具有始终负责的优势。