在MFC应用程序中创建独立表单

时间:2014-04-07 13:28:15

标签: c++ visual-c++ mfc

我有一个简单的应用程序,它有一个基于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();
}

1 个答案:

答案 0 :(得分:0)

使用CreateDialog创建对话框。对话框是无模式的,但仍需要一个有效的消息循环。这应该是正常的方式。 您可以隐藏和显示对话框,或者销毁它并随时重新创建它。

还有另一种方法,具体取决于您希望如何使用此对话框。您可以启动第二个UI框架,并在那里启动模态或无模式对话框。即使主线程正忙,此对话框也具有始终负责的优势。