Il messaggio WM_INITDIALOG

Il sistema fa del messaggio non inviare una WM_CREATE alla procedura di casella di dialogo. Invece, Invia un messaggio WM_INITDIALOG quando crea la finestra di dialogo e tutti i relativi controlli ma prima che esso viene visualizzato nella finestra di dialogo. La procedura dovrebbe svolgere qualsiasi inizializzazione necessaria per assicurare che nella finestra di dialogo consente di visualizzare le impostazioni correnti connesse con il comando o l'attività. Ad esempio, quando una finestra di dialogo contiene un controllo per mostrare l'unità corrente e directory, la procedura deve determinare l'unità corrente e directory e impostare il controllo che il valore.

La procedura è possibile inizializzare i controlli utilizzando le funzioni quali SetDlgItemText e CheckDlgButton. Poiché i controlli sono windows, la procedura può anche manipolare li utilizzando le funzioni di gestione della finestra come EnableWindow e SetFocus. La procedura può recuperare l'handle di finestra per un controllo utilizzando la funzione GetDlgItem.

La procedura di casella di dialogo possibile modificare il contenuto, stato e posizione di qualsiasi controllo come stato necessario. Ad esempio, nella finestra di dialogo che contiene una casella di riepilogo di nomi di file e un pulsante Apri, la procedura può disattivare il pulsante Apri fino a quando l'utente seleziona un file dall'elenco. In questo esempio, il modello di finestra di dialogo consente di specificare lo stile WS_DISABLED per il pulsante Apri e il sistema disattiva automaticamente il pulsante il momento della sua creazione. Quando la procedura di dialogo casella riceve un messaggio di notifica dalla casella di riepilogo che indica che l'utente ha selezionato un file, la routine richiama la funzione EnableWindow per attivare il pulsante Apri.

Per visualizzare un'icona personalizzata sulla barra del titolo della finestra di dialogo, il gestore WM_INITDIALOG può inviare il messaggio WM_SETICON a nella finestra di dialogo.

Se l'applicazione crea la finestra di dialogo utilizzando una delle funzioni DialogBoxParam, DialogBoxIndirectParam, CreateDialogParamo CreateDialogIndirectParam, il parametro lParam del messaggio WM_INITDIALOG contiene il parametro passato alla funzione supplementare. Le applicazioni utilizzano in genere questo parametro aggiuntivo per passare l'indirizzo delle informazioni sull'inizializzazione aggiuntivo alla procedura di dialogo casella, ma la procedura di casella di dialogo deve determinare il significato del parametro. Se l'applicazione utilizza un'altra funzione per creare il dialogo, il sistema imposta il parametro lParam su NULL.

Prima di tornare dal messaggio WM_INITDIALOG , la procedura deve determinare se è necessario impostare lo stato attivo per l'input su un determinato controllo. Se la procedura di casella di dialogo restituisce TRUE, il sistema automaticamente imposta lo stato attivo per l'input al controllo cui handle della finestra è nel parametro wParam . Se il controllo riceve lo stato attivo predefinito non è appropriato, può impostare lo stato attivo al controllo appropriato utilizzando la funzione SetFocus . Se la routine imposta lo stato attivo per l'input, esso deve restituire FALSE per impedire che il sistema impostando la messa a fuoco predefinito. Il controllo riceve il valore predefinito di input focus è sempre il primo controllo dato nel modello che è visibile, non disattivato, e ha lo stile WS_TABSTOP. Se questo controllo non esiste, il sistema imposta lo stato attivo input predefinito sul primo controllo nel modello.

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index