Klasa CDialog

Klasa podstawowa używana do wyświetlania okien dialogowych na ekranie.

Składnia

class CDialog : public CWnd

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CDialog::CDialog CDialog Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CDialog::Create Inicjuje CDialog obiekt. Tworzy okno dialogowe bez moderowania i dołącza je do CDialog obiektu.
CDialog::CreateIndirect Tworzy okno dialogowe bez moderowania na podstawie szablonu okna dialogowego w pamięci (nie opartego na zasobach).
CDialog::D oModal Wywołuje modalne okno dialogowe i zwraca wartość po zakończeniu.
CDialog::EndDialog Zamyka modalne okno dialogowe.
CDialog::GetDefID Pobiera identyfikator domyślnej kontrolki pushbutton dla okna dialogowego.
CDialog::GotoDlgCtrl Przenosi fokus do określonej kontrolki okna dialogowego w oknie dialogowym.
CDialog::InitModalIndirect Tworzy modalne okno dialogowe na podstawie szablonu okna dialogowego w pamięci (nie opartego na zasobach). Parametry są przechowywane do momentu wywołania funkcji DoModal .
CDialog::MapDialogRect Konwertuje jednostki okna dialogowego prostokąta na jednostki ekranu.
CDialog::NextDlgCtrl Przenosi fokus do następnej kontrolki okna dialogowego w oknie dialogowym.
CDialog::OninitDialog Zastąpij w celu rozszerzenia inicjowania okna dialogowego.
CDialog::OnSetFont Zastąpić, aby określić czcionkę, która ma być używana przez kontrolkę okna dialogowego podczas rysowania tekstu.
CDialog::P revDlgCtrl Przenosi fokus do poprzedniej kontrolki okna dialogowego w oknie dialogowym.
CDialog::SetDefID Zmienia domyślną kontrolkę pushbutton okna dialogowego na określony przycisk pushbutton.
CDialog::SetHelpID Ustawia identyfikator pomocy kontekstowej dla okna dialogowego.

Metody chronione

Nazwa/nazwisko opis
CDialog::OnCancel Zastąp, aby wykonać przycisk Anuluj lub akcję klawisza ESC. Wartość domyślna zamyka okno dialogowe i DoModal zwraca wartość IDCANCEL.
CDialog::OnOK Zastąpij, aby wykonać akcję przycisku OK w modalnym oknie dialogowym. Wartość domyślna zamyka okno dialogowe i DoModal zwraca element IDOK.

Uwagi

Okna dialogowe mają dwa typy: modalne i moderowane. Aby aplikacja kontynuowała działanie, okno dialogowe modalne musi zostać zamknięte przez użytkownika. Modeless okno dialogowe umożliwia użytkownikowi wyświetlanie okna dialogowego i powrót do innego zadania bez anulowania lub usuwania okna dialogowego.

CDialog Obiekt jest kombinacją szablonu okna dialogowego i klasy pochodnejCDialog. Użyj edytora okien dialogowych, aby utworzyć szablon okna dialogowego i zapisać go w zasobie, a następnie użyj kreatora Dodaj klasę, aby utworzyć klasę pochodzącą z CDialogklasy .

Okno dialogowe, podobnie jak każde inne okno, odbiera komunikaty z systemu Windows. W oknie dialogowym szczególnie interesuje Cię obsługa komunikatów powiadomień z kontrolek okna dialogowego, ponieważ w ten sposób użytkownik wchodzi w interakcję z twoim oknie dialogowym. Użyj Kreatora klas, aby wybrać komunikaty, które mają być obsługiwane, i doda odpowiednie wpisy mapy komunikatów i funkcje składowe programu obsługi komunikatów do klasy. Wystarczy napisać tylko kod specyficzny dla aplikacji w funkcjach składowych programu obsługi.

Jeśli wolisz, zawsze możesz ręcznie napisać wpisy mapy komunikatów i funkcje składowe.

We wszystkich, ale najbardziej trywialnych oknach dialogowych, dodajesz zmienne składowe do klasy pochodnego okna dialogowego, aby przechowywać dane wprowadzone w kontrolkach okna dialogowego przez użytkownika lub wyświetlać dane dla użytkownika. Możesz użyć kreatora Dodaj zmienną, aby utworzyć zmienne członkowskie i skojarzyć je z kontrolkami. Jednocześnie wybierasz typ zmiennej i dopuszczalny zakres wartości dla każdej zmiennej. Kreator kodu dodaje zmienne składowe do klasy pochodnego okna dialogowego.

Mapa danych jest generowana w celu automatycznego obsługi wymiany danych między zmiennymi składowymi a kontrolkami okna dialogowego. Mapa danych udostępnia funkcje, które inicjują kontrolki w oknie dialogowym z odpowiednimi wartościami, pobierają dane i weryfikują dane.

Aby utworzyć modalne okno dialogowe, skonstruuj obiekt na stosie przy użyciu konstruktora dla klasy pochodnego okna dialogowego, a następnie wywołaj polecenie DoModal , aby utworzyć okno dialogowe i jego kontrolki. Jeśli chcesz utworzyć okno dialogowe bez moderowania, wywołaj metodę Create w konstruktorze klasy okna dialogowego.

Szablon można również utworzyć w pamięci przy użyciu struktury danych DLGTEMPLATE zgodnie z opisem w zestawie Windows SDK. Po utworzeniu obiektu wywołaj metodę CDialogCreateIndirect, aby utworzyć okno dialogowe bez moderowania, lub wywołaj metodę InitModalIndirect i DoModal, aby utworzyć modalne okno dialogowe.

Mapa danych wymiany i walidacji jest zapisywana w przesłonięcie, które jest dodawane do nowej klasy okna dialogowego CWnd::DoDataExchange . Zobacz funkcję składową DoDataExchange w programie , CWnd aby uzyskać więcej informacji na temat funkcji wymiany i walidacji.

Zarówno programista, jak i struktura wywołają DoDataExchange pośrednio wywołanie CWnd ::UpdateData.

Platforma wywołuje UpdateData , gdy użytkownik kliknie przycisk OK, aby zamknąć modalne okno dialogowe. (Dane nie są pobierane, jeśli kliknięto przycisk Anuluj). Domyślna implementacja onInitDialog wywołuje UpdateData również metodę ustawiania początkowych wartości kontrolek. Zazwyczaj zastępowane jest dalsze inicjowanie OnInitDialog kontrolek. OnInitDialog jest wywoływana po utworzeniu wszystkich kontrolek okna dialogowego i tuż przed wyświetleniem okna dialogowego.

Wywołanie można wywołać CWnd::UpdateData w dowolnym momencie podczas wykonywania modalnego lub moderowego okna dialogowego.

Jeśli utworzysz okno dialogowe ręcznie, dodasz niezbędne zmienne składowe do klasy pochodnego okna dialogowego, a następnie dodasz funkcje składowe, aby ustawić lub pobrać te wartości.

Modalne okno dialogowe jest zamykane automatycznie, gdy użytkownik naciska przyciski OK lub Anuluj albo gdy kod wywołuje funkcję składową EndDialog .

Podczas implementowania okna dialogowego bez moderowania zawsze przesłaniaj OnCancel funkcję składową i wywołaj DestroyWindow ją z niej. Nie należy wywoływać klasy CDialog::OnCancelbazowej , ponieważ wywołuje EndDialogmetodę , co spowoduje, że okno dialogowe będzie niewidoczne, ale nie spowoduje jego zniszczenia. Należy również zastąpić PostNcDestroy okna dialogowe bez moderowania, aby usunąć thiselement , ponieważ moderowane okna dialogowe są zwykle przydzielane za pomocą newpolecenia . Modalne okna dialogowe są zwykle konstruowane na ramce i nie wymagają PostNcDestroy czyszczenia.

Aby uzyskać więcej informacji na temat CDialogprogramu , zobacz Okna dialogowe.

Hierarchia dziedziczenia

Cobject

Ccmdtarget

Cwnd

CDialog

Wymagania

Nagłówek: afxwin.h

CDialog::CDialog

Aby utworzyć modalne okno dialogowe oparte na zasobach, wywołaj jedną z publicznych form konstruktora.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

Parametry

lpszTemplateName
Zawiera ciąg o wartości null, który jest nazwą zasobu szablonu okna dialogowego.

nIDTemplate
Zawiera identyfikator zasobu szablonu okna dialogowego.

pParentWnd
Wskazuje obiekt okna nadrzędnego lub właściciela (typu CWnd), do którego należy obiekt okna dialogowego. Jeśli ma wartość NULL, nadrzędne okno obiektu okna dialogowego jest ustawione na główne okno aplikacji.

Uwagi

Jedna forma konstruktora zapewnia dostęp do zasobu okna dialogowego według nazwy szablonu. Drugi konstruktor zapewnia dostęp według numeru identyfikatora szablonu, zwykle z prefiksem IDD_ (na przykład IDD_DIALOG1).

Aby utworzyć modalne okno dialogowe z szablonu w pamięci, najpierw wywołaj bez parametrów, chroniony konstruktor, a następnie wywołaj metodę InitModalIndirect.

Po utworzeniu modalnego okna dialogowego z jedną z powyższych metod wywołaj metodę DoModal.

Aby utworzyć bez moderowe okno dialogowe, użyj chronionej formy konstruktora CDialog . Konstruktor jest chroniony, ponieważ należy utworzyć własną klasę okna dialogowego, aby zaimplementować okno dialogowe bez moderowania. Konstruowanie moderowego okna dialogowego jest procesem dwuetapowym. Najpierw wywołaj konstruktor; następnie wywołaj Create funkcję składową, aby utworzyć okno dialogowe oparte na zasobach, lub wywołaj CreateIndirect polecenie , aby utworzyć okno dialogowe na podstawie szablonu w pamięci.

CDialog::Create

Wywołaj Create metodę , aby utworzyć okno dialogowe bez moderowania przy użyciu szablonu okna dialogowego z zasobu.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

Parametry

lpszTemplateName
Zawiera ciąg o wartości null, który jest nazwą zasobu szablonu okna dialogowego.

pParentWnd
Wskazuje obiekt okna nadrzędnego (typu CWnd), do którego należy obiekt okna dialogowego. Jeśli ma wartość NULL, nadrzędne okno obiektu okna dialogowego jest ustawione na główne okno aplikacji.

nIDTemplate
Zawiera identyfikator zasobu szablonu okna dialogowego.

Wartość zwracana

Obie formularze zwracają wartość nonzero, jeśli tworzenie i inicjowanie okna dialogowego zakończyło się pomyślnie; w przeciwnym razie 0.

Uwagi

Wywołanie można umieścić wewnątrz konstruktora lub wywołać Create je po wywołaniu konstruktora.

Dwa formularze Create funkcji składowej są udostępniane w celu uzyskania dostępu do zasobu szablonu okna dialogowego za pomocą nazwy szablonu lub numeru identyfikatora szablonu (na przykład IDD_DIALOG1).

W przypadku dowolnego formularza przekaż wskaźnik do obiektu okna nadrzędnego. Jeśli parametr pParentWnd ma wartość NULL, zostanie utworzone okno dialogowe z oknem nadrzędnym lub właścicielem ustawionym na główne okno aplikacji.

Funkcja Create składowa jest zwracana natychmiast po utworzeniu okna dialogowego.

Użyj stylu WS_VISIBLE w szablonie okna dialogowego, jeśli okno dialogowe powinno pojawić się po utworzeniu okna nadrzędnego. W przeciwnym razie należy wywołać metodę ShowWindow. Aby uzyskać więcej stylów okna dialogowego i ich aplikacji, zobacz strukturę DLGTEMPLATE w zestawie SDK systemu Windows i style okien w dokumentacji MFC.

CWnd::DestroyWindow Użyj funkcji, aby zniszczyć okno dialogowe utworzone przez Create funkcję.

Przykład

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

Wywołaj tę funkcję składową, aby utworzyć bez moderowe okno dialogowe z szablonu okna dialogowego w pamięci.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parametry

lpDialogTemplate
Wskazuje pamięć zawierającą szablon okna dialogowego użyty do utworzenia okna dialogowego. Ten szablon jest w formie informacji o strukturze DLGTEMPLATE i kontrolce, zgodnie z opisem w zestawie Windows SDK.

pParentWnd
Wskazuje obiekt okna nadrzędnego obiektu okna dialogowego (typu CWnd). Jeśli ma wartość NULL, nadrzędne okno obiektu okna dialogowego jest ustawione na główne okno aplikacji.

lpDialogInit
Wskazuje zasób DLGINIT.

hDialogTemplate
Zawiera dojście do pamięci globalnej zawierającej szablon okna dialogowego. Ten szablon jest w formie DLGTEMPLATE struktury i danych dla każdej kontrolki w oknie dialogowym.

Wartość zwracana

Nonzero, jeśli okno dialogowe zostało utworzone i zainicjowane pomyślnie; w przeciwnym razie 0.

Uwagi

Funkcja CreateIndirect składowa jest zwracana natychmiast po utworzeniu okna dialogowego.

Użyj stylu WS_VISIBLE w szablonie okna dialogowego, jeśli okno dialogowe powinno pojawić się po utworzeniu okna nadrzędnego. W przeciwnym razie należy wywołać metodę ShowWindow , aby ją wywołać. Aby uzyskać więcej informacji na temat sposobu określania innych stylów okna dialogowego w szablonie, zobacz strukturę DLGTEMPLATE w zestawie SDK systemu Windows.

CWnd::DestroyWindow Użyj funkcji, aby zniszczyć okno dialogowe utworzone przez CreateIndirect funkcję.

Okna dialogowe zawierające kontrolki ActiveX wymagają dodatkowych informacji podanych w zasobie DLGINIT.

CDialog::D oModal

Wywołaj tę funkcję składową, aby wywołać modalne okno dialogowe i zwrócić wynik okna dialogowego po zakończeniu.

virtual INT_PTR DoModal();

Wartość zwracana

Wartość określająca int wartość parametru nResult przekazanego do funkcji składowej CDialog::EndDialog , która jest używana do zamknięcia okna dialogowego. Zwracana wartość to -1, jeśli funkcja nie może utworzyć okna dialogowego lub idABORT, jeśli wystąpił inny błąd, w tym przypadku okno danych wyjściowych będzie zawierać informacje o błędzie z błędu GetLastError.

Uwagi

Ta funkcja składowa obsługuje całą interakcję z użytkownikiem, gdy okno dialogowe jest aktywne. To właśnie sprawia, że okno dialogowe jest modalne; oznacza to, że użytkownik nie może wchodzić w interakcje z innymi oknami, dopóki okno dialogowe nie zostanie zamknięte.

Jeśli użytkownik kliknie jeden z przycisków w oknie dialogowym, takim jak OK lub Anuluj, funkcja składowa programu obsługi komunikatów, taka jak OnOK lub OnCancel, jest wywoływana w celu podjęcia próby zamknięcia okna dialogowego. Domyślna OnOK funkcja składowa zweryfikuje i zaktualizuje dane okna dialogowego i zamknie okno dialogowe z identyfikatorem IDOK wyniku, a domyślna OnCancel funkcja składowa zamknie okno dialogowe z identyfikatorem WYNIKU IDCANCEL bez sprawdzania poprawności lub aktualizowania danych okna dialogowego. Można zastąpić te funkcje obsługi komunikatów, aby zmienić ich zachowanie.

Uwaga

PreTranslateMessage Funkcja jest teraz wywoływana do przetwarzania komunikatów w modalnym oknie dialogowym.

Przykład

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

Wywołaj tę funkcję składową, aby zakończyć modalne okno dialogowe.

void EndDialog(int nResult);

Parametry

nResult
Zawiera wartość, która ma zostać zwrócona z okna dialogowego do obiektu wywołującego .DoModal

Uwagi

Ta funkcja składowa zwraca wartość nResult jako zwracaną wartość DoModal. Należy użyć funkcji do ukończenia przetwarzania EndDialog za każdym razem, gdy zostanie utworzone modalne okno dialogowe.

Wywołanie można wywołać EndDialog w dowolnym momencie, nawet w dzienniku OnInitDialog, w którym przypadku należy zamknąć okno dialogowe przed jego pokazaniem lub przed ustawieniem fokusu wejściowego.

EndDialog program nie zamyka okna dialogowego natychmiast. Zamiast tego ustawia flagę, która kieruje okno dialogowe, aby zamknąć natychmiast po powrocie bieżącego programu obsługi komunikatów.

Przykład

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

Wywołaj GetDefID funkcję składową, aby uzyskać identyfikator domyślnej kontrolki pushbutton okna dialogowego.

DWORD GetDefID() const;

Wartość zwracana

Wartość 32-bitowa ( DWORD). Jeśli domyślny przycisk pushbutton ma wartość ID, wyraz o wysokiej kolejności zawiera DC_HASDEFID, a wyraz o niskiej kolejności zawiera wartość identyfikatora. Jeśli domyślny przycisk pushbutton nie ma wartości identyfikatora, zwracana wartość to 0.

Uwagi

Zazwyczaj jest to przycisk OK.

CDialog::GotoDlgCtrl

Przenosi fokus do określonej kontrolki w oknie dialogowym.

void GotoDlgCtrl(CWnd* pWndCtrl);

Parametry

pWndCtrl
Identyfikuje okno (kontrolkę), które ma otrzymać fokus.

Uwagi

Aby uzyskać wskaźnik do kontrolki (okno podrzędne) do przekazania jako pWndCtrl, wywołaj CWnd::GetDlgItem funkcję składową, która zwraca wskaźnik do obiektu CWnd .

Przykład

Zobacz przykład CWnd ::GetDlgItem.

CDialog::InitModalIndirect

Wywołaj tę funkcję składową, aby zainicjować modalny obiekt okna dialogowego przy użyciu szablonu okna dialogowego utworzonego w pamięci.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parametry

lpDialogTemplate
Wskazuje pamięć zawierającą szablon okna dialogowego użyty do utworzenia okna dialogowego. Ten szablon jest w formie informacji o strukturze DLGTEMPLATE i kontrolce, zgodnie z opisem w zestawie Windows SDK.

hDialogTemplate
Zawiera dojście do pamięci globalnej zawierającej szablon okna dialogowego. Ten szablon jest w formie DLGTEMPLATE struktury i danych dla każdej kontrolki w oknie dialogowym.

pParentWnd
Wskazuje obiekt okna nadrzędnego lub właściciela (typu CWnd), do którego należy obiekt okna dialogowego. Jeśli ma wartość NULL, nadrzędne okno obiektu okna dialogowego jest ustawione na główne okno aplikacji.

lpDialogInit
Wskazuje zasób DLGINIT.

Wartość zwracana

Niezerowe, jeśli obiekt okna dialogowego został utworzony i zainicjowany pomyślnie; w przeciwnym razie 0.

Uwagi

Aby pośrednio utworzyć modalne okno dialogowe, najpierw przydziel globalny blok pamięci i wypełnij go szablonem okna dialogowego. Następnie wywołaj pusty CDialog konstruktor, aby skonstruować obiekt okna dialogowego. Następnie wywołaj metodę InitModalIndirect przechowywania dojścia do szablonu okna dialogowego w pamięci. Okno dialogowe systemu Windows zostanie utworzone i wyświetlone później po wywołaniu funkcji składowej DoModal .

Okna dialogowe zawierające kontrolki ActiveX wymagają dodatkowych informacji podanych w zasobie DLGINIT.

CDialog::MapDialogRect

Wywołaj metodę , aby przekonwertować jednostki okna dialogowego prostokąta na jednostki ekranu.

void MapDialogRect(LPRECT lpRect) const;

Parametry

Lprect
Wskazuje strukturę RECT lub obiekt CRect zawierający współrzędne okna dialogowego, które mają zostać przekonwertowane.

Uwagi

Jednostki okna dialogowego są określone w odniesieniu do bieżącej jednostki bazowej okna dialogowego pochodzącej ze średniej szerokości i wysokości znaków w czcionki używanej dla tekstu okna dialogowego. Jedna jednostka pozioma to jedna czwarta jednostki szerokości bazowej okna dialogowego, a jedna jednostka pionowa to jedna ósma jednostki wysokości bazowej okna dialogowego.

Funkcja GetDialogBaseUnits systemu Windows zwraca informacje o rozmiarze czcionki systemowej, ale można określić inną czcionkę dla każdego okna dialogowego, jeśli używasz stylu DS_SETFONT w pliku definicji zasobów. Funkcja MapDialogRect systemu Windows używa odpowiedniej czcionki dla tego okna dialogowego.

Funkcja MapDialogRect składowa zastępuje jednostki okna dialogowego w lpRect jednostkami ekranu (pikseli), dzięki czemu prostokąt może służyć do utworzenia okna dialogowego lub położenia kontrolki w polu.

CDialog::NextDlgCtrl

Przenosi fokus do następnej kontrolki w oknie dialogowym.

void NextDlgCtrl() const;

Uwagi

Jeśli fokus znajduje się w ostatniej kontrolce w oknie dialogowym, zostanie przeniesiony do pierwszej kontrolki.

CDialog::OnCancel

Platforma wywołuje tę metodę, gdy użytkownik kliknie przycisk Anuluj lub naciśnie klawisz ESC w modalnym lub moderowym oknie dialogowym.

virtual void OnCancel();

Uwagi

Zastąp tę metodę do wykonywania akcji (takich jak przywracanie starych danych), gdy użytkownik zamknie okno dialogowe, klikając przycisk Anuluj lub naciskając klawisz ESC. Domyślnie zamyka modalne okno dialogowe, wywołując metodę EndDialog i powodując, że tryb DoModal zwraca identyfikator IDCANCEL.

Jeśli zaimplementujesz przycisk Anuluj w trybie okna dialogowego, musisz zastąpić metodę OnCancel i wywołać ją DestroyWindow. Nie należy wywoływać metody klasy bazowej, ponieważ wywołuje EndDialogmetodę , co spowoduje, że okno dialogowe będzie niewidoczne, ale nie spowoduje jego zniszczenia.

Uwaga

Nie można zastąpić tej metody, gdy używasz CFileDialog obiektu w programie skompilowanym w systemie Windows XP. Aby uzyskać więcej informacji na temat CFileDialogprogramu , zobacz Klasa CFileDialog.

Przykład

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OninitDialog

Ta metoda jest wywoływana WM_INITDIALOG w odpowiedzi na komunikat.

virtual BOOL OnInitDialog();

Wartość zwracana

Określa, czy aplikacja ustawiła fokus wejściowy na jedną z kontrolek w oknie dialogowym. Jeśli OnInitDialog zwraca wartość niezerową, system Windows ustawia fokus wejściowy na lokalizację domyślną, pierwszą kontrolkę w oknie dialogowym. Aplikacja może zwrócić wartość 0 tylko wtedy, gdy jawnie ustawi fokus danych wejściowych na jedną z kontrolek w oknie dialogowym.

Uwagi

System Windows wysyła WM_INITDIALOG komunikat do okna dialogowego podczas wywołań Create, CreateIndirect lub DoModal , które występują bezpośrednio przed wyświetleniem okna dialogowego.

Zastąpi tę metodę, jeśli chcesz wykonać specjalne przetwarzanie podczas inicjowania okna dialogowego. W przesłoniętej wersji najpierw wywołaj klasę OnInitDialog bazową, ale zignoruj jej wartość zwracaną. Zazwyczaj nastąpi powrót TRUE z metody przesłoniętej.

System Windows wywołuje OnInitDialog funkcję przy użyciu standardowej globalnej procedury okna dialogowego wspólnego dla wszystkich okien dialogowych biblioteki klas programu Microsoft Foundation. Nie wywołuje tej funkcji za pośrednictwem mapy komunikatów i dlatego nie potrzebujesz wpisu mapy komunikatów dla tej metody.

Uwaga

Nie można zastąpić tej metody w przypadku używania CFileDialog obiektu w programie skompilowanym w systemach operacyjnych Windows Vista lub nowszych. Aby uzyskać więcej informacji na temat zmian w CFileDialog systemie Windows Vista i nowszych, zobacz CFileDialog Class (Klasa CFileDialog).

Przykład

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

Wywoływana, gdy użytkownik kliknie przycisk OK (przycisk z identyfikatorem IDOK).

virtual void OnOK();

Uwagi

Zastąpij tę metodę, aby wykonywać akcje po aktywowaniu przycisku OK . Jeśli okno dialogowe zawiera automatyczną walidację i wymianę danych, domyślna implementacja tej metody weryfikuje dane okna dialogowego i aktualizuje odpowiednie zmienne w aplikacji.

Jeśli zaimplementujesz przycisk OK w bez moderowym oknie dialogowym, musisz zastąpić metodę i wywołać metodę OnOK DestroyWindow wewnątrz niego. Nie należy wywoływać metody klasy bazowej, ponieważ wywołuje metodę EndDialog , która sprawia, że okno dialogowe jest niewidoczne, ale nie powoduje jego zniszczenia.

Uwaga

Nie można zastąpić tej metody, gdy używasz CFileDialog obiektu w programie skompilowanym w systemie Windows XP. Aby uzyskać więcej informacji na temat CFileDialogprogramu , zobacz Klasa CFileDialog.

Przykład

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

Określa czcionkę kontrolka okna dialogowego będzie używana podczas rysowania tekstu.

Virtual void OnSetFont(CFont* pFont);

Parametry

pFont
[in] Określa wskaźnik do czcionki, która będzie używana jako domyślna czcionka dla wszystkich kontrolek w tym oknie dialogowym.

Uwagi

W oknie dialogowym zostanie użyta określona czcionka jako domyślna dla wszystkich kontrolek.

Edytor okien dialogowych zazwyczaj ustawia czcionkę okna dialogowego jako część zasobu szablonu okna dialogowego.

Uwaga

Nie można zastąpić tej metody w przypadku używania CFileDialog obiektu w programie skompilowanym w systemach operacyjnych Windows Vista lub nowszych. Aby uzyskać więcej informacji na temat zmian w CFileDialog systemie Windows Vista i nowszych, zobacz CFileDialog Class (Klasa CFileDialog).

CDialog::P revDlgCtrl

Ustawia fokus na poprzednią kontrolkę w oknie dialogowym.

void PrevDlgCtrl() const;

Uwagi

Jeśli fokus znajduje się w pierwszej kontrolce w oknie dialogowym, zostanie przeniesiony do ostatniej kontrolki w polu .

CDialog::SetDefID

Zmienia domyślną kontrolkę pushbutton okna dialogowego.

void SetDefID(UINT nID);

Parametry

Nid
Określa identyfikator kontrolki pushbutton, która stanie się wartością domyślną.

CDialog::SetHelpID

Ustawia identyfikator pomocy kontekstowej dla okna dialogowego.

void SetHelpID(UINT nIDR);

Parametry

nIDR
Określa identyfikator pomocy kontekstowej.

Zobacz też

Przykładowe DLGCBR32 MFC
Przykład MFC DLGTEMPL
Klasa CWnd
Wykres hierarchii