Tworzenie modalne okno dialogowe

Modalnego okna dialogowego można utworzyć za pomocą funkcji DialogBox . Należy określić identyfikator lub nazwa zasobu szablonu pole dialogowe i adres procedury pole dialogowe. Funkcja DialogBox ładuje szablonu, wyświetla okno dialogowe i przetwarza wszystkie dane wejściowe użytkownika, dopóki użytkownik nie zamknie okno dialogowe.

W poniższym przykładzie aplikacja wyświetla modalnego okna dialogowego, gdy użytkownik wybierze polecenie Usuń element z menu aplikacji. Okno dialogowe zawiera formant edycyjny (w którym użytkownik wpisuje nazwę elementu) OK i Anuluj przycisków. Identyfikatory sterowania za te kontrole są odpowiednio ID_ITEMNAME, IDOK i IDCANCEL,.

Pierwsza część przykładzie składa się z instrukcji, które utworzyć modalnego okna dialogowego. Oświadczenia te procedury okna głównego okna aplikacji, tworzenie okna dialogowego gdy system odbierze komunikat WM_COMMAND , posiadające identyfikator polecenia IDM_DELETEITEM. Druga część przykładzie jest procedury pole dialogowe, która pobiera zawartość formantu edycyjnego i zamyka okno dialogowe po otrzymaniu wiadomości WM_COMMAND.

Poniższe instrukcje tworzenia modalnego okna dialogowego. Szablon pola dialogowe zasób w pliku wykonywalnego aplikacji i ma identyfikator zasobów DLG_DELETEITEM:

sprawa WM_COMMAND: przełącznik (LOWORD(wParam)) {Sprawa IDM_DELETEITEM: Jeśli (DialogBox (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, DeleteItemProc (DLGPROC)) == IDOK) {}
 
                    / / Ukończyć polecenia; szItemName / / zawiera nazwę towaru / / delete. 

                }
 
                else 
                {

/ / Anulować polecenie. 

                } 
                break; 
        } zwraca 0 L 

 

W tym przykładzie Aplikacja identyfikuje jej głównego okna w oknie właściciela dla okna dialogowego. Gdy system początkowo wyświetla okno dialogowe, jego sytuacja jest względem lewego górnego rogu obszaru klienckiego okna właściciela. Aplikacja używa wartość zwracany z DialogBox , aby określić, czy należy kontynuować polecenie albo anuluj ją. Poniższe instrukcje definiują procedurę pole dialogowe.

char szItemName [80]; / / otrzymuje nazwę elementu do usunięcia. 
 
BOOL wywołania zwrotnego DeleteItemProc (hwndDlg, wiadomości, wParam, fikcyjnymi) HWND hwndDlg; 
UINT wiadomości; 
WPARAM wParam; 
FIKCYJNYMI fikcyjnymi; 
{przełącznika (wiadomości) {Sprawa WM_COMMAND: przełącznik (LOWORD(wParam)) {Sprawa IDOK: if (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0; 
 
                    / / Przechodzić. 
 
                Sprawa IDCANCEL: EndDialog (hwndDlg, wParam); 
                    Zwraca wartość PRAWDA; 
            }} Zwraca FALSE; 
} 

 

W tym przykładzie procedura używa GetDlgItemText pobrać bieżący tekst z formantu edycyjnego zidentyfikowane przez ID_ITEMNAME. Procedura wywołuje funkcję EndDialog , aby ustawić wartość zwracany okno dialogowe IDOK lub IDCANCEL, w zależności od Odebrano wiadomość i rozpocząć proces zamykania okna dialogowego. Identyfikatory IDOK i IDCANCEL odpowiadają przyciski OK i Anuluj. Po procedura wywołuje EndDialog, system wysyła komunikaty dodatkowe procedury do zniszczenia okno dialogowe i zwraca wartość zwracany okno dialogowe funkcji, utworzony przez okno dialogowe.

Index