Создать независимую форму в приложении MFC

0

У меня есть простое приложение, в котором в качестве основного окна есть одна форма диалогового окна 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();
}
Теги:
visual-c++
mfc

1 ответ

0
Лучший ответ

Либо создайте диалог с CreateDialog. Чем диалог не нужен, но все же нужен рабочий цикл сообщений. Это должен быть нормальный путь. Вы можете скрыть и показать диалог, или уничтожить его и воссоздать его в любое время.

Существует другой способ, в зависимости от того, как вы хотите использовать этот диалог. Вы можете запустить второй кадр пользовательского интерфейса и запустить диалог либо модальный, либо немодальный. Этот диалог имеет то преимущество, что он всегда несет ответственность, даже если основной поток занят.

  • 0
    Похоже, мне нужно использовать второй метод, потому что обе мои формы (основная и статусная) безответственны во время вызова функции из библиотечной функции. Форма состояния вызывается во время процедуры обратного вызова. Но как создать второй кадр пользовательского интерфейса?
  • 0
    Мое главное окно - диалог. Так что, вероятно, мне нужно создать не диалог статуса, а независимый от статуса фрейм
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню