Per creare una finestra di dialogo modale, utilizzando la funzione DialogBox . È necessario specificare l'identificatore o il nome di una risorsa modello di finestra di dialogo casella e l'indirizzo della procedura di dialogo casella. La funzione DialogBox carica il modello, viene visualizzata la finestra di dialogo ed elabora tutti gli input dell'utente fino a quando l'utente chiude la finestra di dialogo.
Nell'esempio seguente, l'applicazione visualizza una finestra di dialogo modale quando l'utente sceglie un comando Delete Item da un menu di applicazione. Nella finestra di dialogo contiene un controllo di modifica (in cui l'utente inserisce il nome di un elemento) e OK e annulla i pulsanti. Gli identificatori di controllo per questi controlli sono ID_ITEMNAME, IDOK e IDCANCEL, rispettivamente.
La prima parte dell'esempio è costituito dalle dichiarazioni che creano la finestra di dialogo modale. Queste dichiarazioni, nella procedura di finestra per la finestra principale dell'applicazione, creano nella finestra di dialogo quando il sistema riceve un messaggio WM_COMMAND , avendo l'identificatore del comando IDM_DELETEITEM. La seconda parte dell'esempio è la procedura di casella di dialogo, che recupera il contenuto del controllo di modifica e si chiude la finestra di dialogo al ricevimento di un messaggio WM_COMMAND.
Le istruzioni seguenti creano la finestra di dialogo modale. Il modello di finestra di dialogo è una risorsa in un file eseguibile dell'applicazione ed ha l'identificatore di risorsa DLG_DELETEITEM:
caso WM_COMMAND: passare (LOWORD(wParam)) {caso IDM_DELETEITEM: se (DialogBox (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, DeleteItemProc (DLGPROC)) = = IDOK) {
/ / Completare il comando; szItemName / / contiene il nome dell'elemento da / / delete.
}
else
{
/ / Annullare il comando.
}
break;
} return 0 L
In questo esempio, l'applicazione identifica la sua finestra principale come finestra proprietaria per la finestra di dialogo. Quando il sistema inizialmente vengono visualizzate nella finestra di dialogo, la posizione è relativo angolo superiore sinistro dell'area client della finestra proprietario. L'applicazione utilizza il valore restituito da DialogBox per determinare se procedere con il comando oppure annullarla. Le istruzioni seguenti definiscono la procedura di casella di dialogo.
char szItemName [80]; / / riceve il nome dell'elemento da eliminare.
BOOL CALLBACK DeleteItemProc (hwndDlg, message, wParam, lParam) HWND hwndDlg;
UINT message;
WPARAM wParam;
LPARAM lParam;
{switch (messaggio) {caso WM_COMMAND: passare (LOWORD(wParam)) {caso IDOK: if (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0;
/ / Cadere.
caso IDCANCEL: EndDialog (hwndDlg, wParam);
return TRUE;
}} return FALSE;
}
In questo esempio, la procedura utilizza GetDlgItemText per recuperare il testo corrente dal controllo modifica identificato da ID_ITEMNAME. La procedura, quindi, chiama la funzione EndDialog per impostare il valore restituito della finestra di dialogo a IDOK o IDCANCEL, a seconda del messaggio ricevuto e per iniziare il processo di chiudere la finestra di dialogo. Gli identificatori IDOK e IDCANCEL corrispondono a pulsanti OK e Annulla. Dopo la procedura chiama EndDialog, il sistema invia messaggi aggiuntivi alla procedura per distruggere la finestra di dialogo e restituisce il valore restituito della finestra di dialogo alla funzione che ha creato la finestra di dialogo.
Rimedio: Inserire il CD-ROM CD di MSDN Library.