Implementare una finestra di dialogo
Esistono due modi per aggiungere una finestra di dialogo al progetto ATL: utilizzare la procedura guidata finestra di dialogo ATL o aggiungerlo manualmente.
Aggiunta della finestra di dialogo con la procedura guidata finestra di dialogo ATL
In Aggiungere la finestra di dialogo della classe, selezionare l'oggetto finestra di dialogo ATL per aggiungere una finestra di dialogo al progetto ATL.Completare la procedura guidata finestra di dialogo ATL in base alle esigenze e scegliere Fine.La procedura guidata aggiunge una classe derivata da CAxDialogImpl al progetto.Aprire la Visualizzazione risorse dal menu Visualizza, individuare la finestra di dialogo e fare doppio clic su per aprirla nell'editor di risorse.
[!NOTA]
Se la finestra di dialogo è derivata da CAxDialogImpl, può contenere sia ActiveX dei controlli Windows.Per evitare l'overhead del supporto del controllo ActiveX nella classe della finestra di dialogo, utilizzare CSimpleDialog o CDialogImpl anziché.
Il messaggio e i gestori eventi possono essere aggiunti alla classe della finestra di dialogo da Visualizzazione classi.Per ulteriori informazioni, vedere Aggiunta di un gestore messaggi ATL.
Aggiunta di una finestra di dialogo manualmente
Implementare una finestra di dialogo è simile all'implementazione di una finestra.Derivare la classe da CAxDialogImpl, da CDialogImpl, o da CSimpleDialog e si dichiara mappa messaggi per gestire i messaggi.Tuttavia, è necessario specificare un ID di risorsa modello di finestra di dialogo nella classe derivata.La classe deve disporre di un membro dati denominato IDD per utilizzare questo valore.
[!NOTA]
Quando si crea una finestra di dialogo utilizzando la procedura guidata finestra di dialogo ATL, la procedura guidata aggiungerà automaticamente il membro IDD come tipo enum.
CDialogImpl consente di distribuire un oggetto o una finestra di dialogo non modale che ospita controlli Windows.CAxDialogImpl consente di distribuire un oggetto o una finestra di dialogo non modale che ospita sia ActiveX dei controlli Windows.
Per creare una finestra di dialogo modale, creare un'istanza del CDialogImpl- - deriva dalla classe derivata o CAxDialogImplquindi chiama il metodo DoModal.Per chiudere una finestra di dialogo modale, chiamare il metodo EndDialog da un gestore messaggi.Per creare una finestra di dialogo non modale, chiamare il metodo Crea anziché DoModal.Per eliminare una finestra di dialogo non modale, chiamare DestroyWindow.
Il affondamento degli eventi viene automaticamente eseguito in CAxDialogImpl.Implementare i gestori di messaggi finestra di dialogo come gestori in CWindowImplclasse derivata da.Se è presente un valore restituito messaggio- specifico, restituirne il valore come LRESULT.I valori restituiti LRESULT vengono mappati da ATL per gestione corretta dall'amministratore della finestra di dialogo di Windows.Per informazioni dettagliate, vedere il codice sorgente per CDialogImplBaseT::DialogProc in atlwin.h.
Esempio
La classe implementa una finestra di dialogo:
class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
enum { IDD = IDD_MYDLG };
BEGIN_MSG_MAP(CMyDialog)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some initialization code
return 1;
}
public:
LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};