В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

ИНФОРМАЦИЯ: Создание немодального диалогового окна с помощью библиотеки MFC

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 103788
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
В этой статье демонстрируется создание немодального диалогового окна с помощью шаблона ресурса поле adialog с помощью MFC.

Чтобы создать диалоговое окно CModeless, следующие действия должны befollowed:

  1. Создайте класс диалогового окна, производный от класса CDialog и переопределите функцию-член Create() CDialog. Например может иметь код следующего вида:
          class CModeless: public CDialog           {             .             .             .             public:                 CModeless(){ }                 BOOL Create(UINT nID, CWnd * pWnd)                      { return CDialog::Create(nID,pWnd);}             .             .             .           };				
    Примечание: Может позволить создать класс диалогового окна и просто добавить функции Create() классов.
  2. Напишите код для создания объекта класса диалогового окна и создания диалогового окна. Например если имеется элемент меню, следует открыть диалоговое окно может иметь код следующего вида:
          void CMainFrame::OnModeless()        {            pdlg = new CModeless;            pdlg->Create(IDD_DIALOG1,this);        }				
    где CMainFrame::pdlg определены следующим образом:
    CModeless * pdlg;
    Примечание: Очень важно выделить объект в куче, а не в стеке, чтобы предотвратить уничтожения при выходе из функции безрежимное диалоговое окно.
  3. Необходимо вызвать метод CWnd::DestroyWindow() в OnCancel или всякий раз, когда необходимо уничтожить безрежимное диалоговое окно.
          void CModeless::OnCancel()      {          DestroyWindow();      }				
  4. Переопределите CWnd::PostNcDestroy() в классе диалогового окна, чтобы удалить объект диалогового окна:
       virtual void CModeless::PostNcDestroy() {delete this;}				
    PostNcDestroy() является виртуальной функции-члена класса CWnd, вызывается функция OnNcDestroy().
Класс безрежимного диалогового окна обычно будет переопределить функции-члены andOnCancel() OnOK() для DestroyWindow() вызова и должен notcall базового класса CDialog::OnOK() и CDialog::OnCancel() функции.CallEndDialog() функций CDialog::OnOK() и CDialog::OnCancel(). EndDialog() следует вызывать только при использовании модального dialogboxes.

При использовании диалогового окна Validation(DDV) данных и обмена данными диалогового окна (DDX) для класса диалогового окна может выглядеть экран вы OnOK() обработчика:
   void CModeless::OnOK()   {           if (!UpdateData(TRUE))             {               TRACE0("UpdateData failed during dialog termination\n");               // The UpdateData routine will set focus to correct item               return;             }           DestroyWindow();   }		
Аннотация
kbinf 1.00 1.50 2.00 2.10 2.51 2,50 3,00 2,52 3.10 4,00

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 103788 — последний просмотр: 12/04/2015 09:42:22 — редакция: 5.0

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbdlg kbinfo kbuidesign kbmt KB103788 KbMtru
Отзывы и предложения