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

Переводы статьи Переводы статьи
Код статьи: 103788 - Vizualiza?i produsele pentru care se aplic? acest articol.
В данной статье демонстрируется создание немодального диалогового окна поле с помощью ресурс шаблона диалоговых с помощью MFC.

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

  1. Создание диалогового окна класс, производный от класса CDialog и переопределение CREATE() функцию-член класса CDialog. Например возможно код следующего вида:
          class CModeless: public CDialog
               {
                 .
                 .
                 .
                 public:
                     CModeless(){ }
                     BOOL Create(UINT nID, CWnd * pWnd)
                          { return CDialog::Create(nID,pWnd);}
                 .
                 .
                 .
               };
    				
    Примечание: Может позволить ClassWizard создания класса диалогового окна и затем просто добавьте функции 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().
Класс немодального диалогового окна обычно имеют приоритет над OnOK() и Член OnCancel() функции для вызова DestroyWindow() и не должны вызов функции CDialog::OnOK() и CDialog::OnCancel() базового класса. Вызов функции CDialog::OnOK() и CDialog::OnCancel() EndDialog(). EndDialog() следует вызывать только при использовании модального диалогового окна поля.

При использовании диалогового окна проверки данных и обмена данными диалогового окна (DDX) (DDV), ты 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();
   }
		
Развернуть все | Свернуть все

Свойства

Код статьи: 103788 - Последний отзыв: 1 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Foundation Class Library 4.2 на следующих платформах
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
Ключевые слова: 
kbdlg kbinfo kbuidesign kbmt KB103788 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:103788
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com