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_NCDESTROY
genere ).
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.