Condividi tramite


Classe CDialogImpl

Questa classe fornisce metodi per la creazione di una finestra di dialogo modale o senza modalità.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

template <class T,
    class TBase = CWindow>
    class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT<TBase>

Parametri

T
Classe derivata da CDialogImpl.

TBase
Classe di base della nuova classe. La classe base predefinita è CWindow.

Membri

Metodi

Funzione Descrizione
Crea Crea una finestra di dialogo senza modalità.
DestroyWindow Elimina definitivamente una finestra di dialogo senza modalità.
DoModal Crea una finestra di dialogo modale.
EndDialog Elimina definitivamente una finestra di dialogo modale.

Metodi CDialogImplBaseT

Funzione Descrizione
GetDialogProc Restituisce la routine corrente della finestra di dialogo.
MapDialogRect Esegue il mapping delle unità di finestra di dialogo del rettangolo specificato alle unità dello schermo (pixel).
OnFinalMessage Chiamato dopo aver ricevuto l'ultimo messaggio, in genere WM_NCDESTROY.

Funzioni statiche

Funzione Descrizione
DialogProc Elabora i messaggi inviati alla finestra di dialogo.
StartDialogProc Chiamato quando viene ricevuto il primo messaggio per elaborare i messaggi inviati alla finestra di dialogo.

Osservazioni:

Con CDialogImpl è possibile creare una finestra di dialogo modale o senza modalità. CDialogImpl fornisce la procedura della finestra di dialogo, che usa il mapping dei messaggi predefinito per indirizzare i messaggi ai gestori appropriati.

Il distruttore ~CWindowImplRoot della classe base garantisce che la finestra venga eliminata prima di distruggere l'oggetto.

CDialogImpl deriva da CDialogImplBaseT, che a sua volta deriva da CWindowImplRoot.

Nota

La classe deve definire un IDD membro che specifica l'ID risorsa del modello di finestra di dialogo. Ad esempio, la Creazione guidata progetto ATL aggiunge automaticamente la riga seguente alla classe:

enum { IDD = IDD_MYDLG };

dove MyDlg è il nome breve immesso nella pagina Nomi della procedura guidata.

Per ulteriori informazioni su Vedere
Creazione di controlli Esercitazione ATL
Uso delle finestre di dialogo in ATL Classi di finestra ATL
Creazione guidata progetto ATL Creazione di un progetto ATL
Finestre di dialogo Finestre di dialogo e argomenti successivi in Windows SDK

Requisiti

Intestazione: atlwin.h

CDialogImpl::Create

Crea una finestra di dialogo senza modalità.

HWND Create(
    HWND hWndParent,
    LPARAM dwInitParam = NULL );

HWND Create(
    HWND hWndParent,
    RECT&,
    LPARAM dwInitParam = NULL);

Parametri

hWndParent
[in] Handle per la finestra del proprietario.

RECT& rect [in] Struttura RECT che specifica le dimensioni e la posizione del dialogo.

dwInitParam
[in] Specifica il valore da passare alla finestra di dialogo nel parametro lParam del messaggio WM_INITDIALOG.

Valore restituito

Handle della finestra di dialogo appena creata.

Osservazioni:

Questa finestra di dialogo viene associata automaticamente all'oggetto CDialogImpl . Per creare una finestra di dialogo modale, chiamare DoModal. Il secondo override precedente viene usato solo con CComControl.

CDialogImpl::D estroyWindow

Elimina definitivamente una finestra di dialogo senza modalità.

BOOL DestroyWindow();

Valore restituito

TRUE se la finestra di dialogo è stata eliminata correttamente; in caso contrario FALSE.

Osservazioni:

Restituisce TRUE se la finestra di dialogo è stata eliminata correttamente; in caso contrario FALSE.

CDialogImpl::D ialogProc

Questa funzione statica implementa la routine della finestra di dialogo.

static LRESULT CALLBACK DialogProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

Parametri

hWnd
[in] Handle della finestra di dialogo.

uMsg
[in] Messaggio inviato alla finestra di dialogo.

wParam
[in] Informazioni aggiuntive specifiche del messaggio.

lParam
[in] Informazioni aggiuntive specifiche del messaggio.

Valore restituito

TRUE se il messaggio viene elaborato; in caso contrario, FALSE.

Osservazioni:

DialogProc usa il mapping dei messaggi predefinito per indirizzare i messaggi ai gestori appropriati.

È possibile eseguire l'override DialogProc per fornire un meccanismo diverso per la gestione dei messaggi.

CDialogImpl::D oModal

Crea una finestra di dialogo modale.

INT_PTR DoModal(
    HWND hWndParent = ::GetActiveWindow(),
    LPARAM dwInitParam = NULL);

Parametri

hWndParent
[in] Handle per la finestra del proprietario. Il valore predefinito è il valore restituito della funzione GetActiveWindow Win32.

dwInitParam
[in] Specifica il valore da passare alla finestra di dialogo nel parametro lParam del messaggio WM_INITDIALOG.

Valore restituito

In caso di esito positivo, il valore del parametro nRetCode specificato nella chiamata a EndDialog. In caso contrario, -1.

Osservazioni:

Questa finestra di dialogo viene associata automaticamente all'oggetto CDialogImpl .

Per creare una finestra di dialogo senza modalità, chiamare Crea.

CDialogImpl::EndDialog

Elimina definitivamente una finestra di dialogo modale.

BOOL EndDialog(int nRetCode);

Parametri

nRetCode
[in] Valore da restituire da CDialogImpl::D oModal.

Valore restituito

TRUE se la finestra di dialogo viene eliminata definitivamente; in caso contrario, FALSE.

Osservazioni:

EndDialog deve essere chiamato tramite la procedura di dialogo. Dopo che la finestra di dialogo viene eliminata definitivamente, Windows usa il valore di nRetCode come valore restituito per DoModal, che ha creato la finestra di dialogo.

Nota

Non chiamare EndDialog per eliminare definitivamente una finestra di dialogo senza modalità. Chiama invece CWindow::D estroyWindow .

CDialogImpl::GetDialogProc

Restituisce DialogProc, la routine della finestra di dialogo corrente.

virtual WNDPROC GetDialogProc();

Valore restituito

Routine della finestra di dialogo corrente.

Osservazioni:

Eseguire l'override di questo metodo per sostituire la routine del dialogo con la propria.

CDialogImpl::MapDialogRect

Converte (mappa) le unità di finestra di dialogo del rettangolo specificato in unità schermo (pixel).

BOOL MapDialogRect(LPRECT lpRect);

Parametri

lpRect
Punta a un oggetto o a una CRect struttura RECT che deve ricevere le coordinate client dell'aggiornamento che racchiude l'area di aggiornamento.

Valore restituito

Diverso da zero se l'aggiornamento ha esito positivo; 0 se l'aggiornamento non riesce. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

La funzione sostituisce le coordinate nella struttura specificata RECT con le coordinate convertite, che consente di utilizzare la struttura per creare una finestra di dialogo o posizionare un controllo all'interno di una finestra di dialogo.

CDialogImpl::OnFinalMessage

Chiamato dopo aver ricevuto l'ultimo messaggio (in WM_NCDESTROYgenere ).

virtual void OnFinalMessage(HWND hWnd);

Parametri

hWnd
[in] Handle per la finestra distrutta.

Osservazioni:

Si noti che se si desidera eliminare automaticamente l'oggetto al momento della distruzione della finestra, è possibile chiamare eliminarlo.

CDialogImpl::StartDialogProc

Chiamato una sola volta, quando viene ricevuto il primo messaggio, per elaborare i messaggi inviati alla finestra di dialogo.

static LRESULT CALLBACK StartDialogProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

Parametri

hWnd
[in] Handle della finestra di dialogo.

uMsg
[in] Messaggio inviato alla finestra di dialogo.

wParam
[in] Informazioni aggiuntive specifiche del messaggio.

lParam
[in] Informazioni aggiuntive specifiche del messaggio.

Valore restituito

Procedura della finestra.

Osservazioni:

Dopo la chiamata iniziale a StartDialogProc, DialogProc viene impostata come procedura di dialogo e vengono eseguite altre chiamate.

Vedi anche

BEGIN_MSG_MAP
Cenni preliminari sulla classe