CDialogImpl-Klasse
Diese Klasse stellt Methoden zum Erstellen eines modalen oder moduslosen Dialogfelds bereit.
Wichtig
Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.
template <class T,
class TBase = CWindow>
class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT<TBase>
T
Ihre Klasse, abgeleitet von CDialogImpl
.
TBase
Die Basisklasse Ihrer neuen Klasse. Die Standardbasisklasse ist CWindow.
Funktion | Beschreibung |
---|---|
Erstellen | Erstellt ein Dialogfeld ohne Modus. |
DestroyWindow | Zerstört ein Dialogfeld ohne Modus. |
DoModal | Erstellt ein modales Dialogfeld. |
EndDialog | Zerstört ein modales Dialogfeld. |
Funktion | Beschreibung |
---|---|
GetDialogProc | Gibt die aktuelle Dialogfeldprozedur zurück. |
MapDialogRect | Ordnet die Dialogfeldeinheiten des angegebenen Rechtecks Bildschirmeinheiten (Pixel) zu. |
OnFinalMessage | Wird aufgerufen, nachdem die letzte Nachricht empfangen wurde, in der Regel WM_NCDESTROY. |
Funktion | Beschreibung |
---|---|
DialogProc | Verarbeitet nachrichten, die an das Dialogfeld gesendet werden. |
StartDialogProc | Wird aufgerufen, wenn die erste Nachricht empfangen wird, um nachrichten zu verarbeiten, die an das Dialogfeld gesendet werden. |
Mit CDialogImpl
diesem Dialogfeld können Sie ein modales oder modusloses Dialogfeld erstellen. CDialogImpl
stellt die Dialogfeldprozedur bereit, die die Standardmeldungszuordnung verwendet, um Nachrichten an die entsprechenden Handler zu leiten.
Der Basisklassendestruktor ~CWindowImplRoot
stellt sicher, dass das Fenster nicht mehr vorhanden ist, bevor das Objekt zerstört wird.
CDialogImpl
wird von CDialogImplBaseT
abgeleitet, was wiederum von CWindowImplRoot
abgeleitet wird.
Hinweis
Ihre Klasse muss ein IDD
Element definieren, das die Ressourcen-ID der Dialogvorlage angibt. Der ATL-Projekt-Assistent fügt ihrer Klasse beispielsweise automatisch die folgende Zeile hinzu:
enum { IDD = IDD_MYDLG };
dabei MyDlg
handelt es sich um den Kurznamen, der auf der Seite "Namen" des Assistenten eingegeben wurde.
Weitere Informationen zu | Siehe |
---|---|
Erstellen von Steuerelementen | ATL-Tutorial |
Verwenden von Dialogfeldern in ATL | ATL-Fensterklassen |
ATL-Projekt-Assistent | Erstellen eines ATL-Projekts |
Dialogfelder | Dialogfelder und nachfolgende Themen im Windows SDK |
Kopfzeile: atlwin.h
Erstellt ein Dialogfeld ohne Modus.
HWND Create(
HWND hWndParent,
LPARAM dwInitParam = NULL );
HWND Create(
HWND hWndParent,
RECT&,
LPARAM dwInitParam = NULL);
hWndParent
[in] Das Handle für das Besitzerfenster.
RECT&rect [in] Eine RECT-Struktur, die die Größe und Position des Dialogfelds angibt.
dwInitParam
[in] Gibt den Wert an, der an das Dialogfeld im lParam-Parameter der WM_INITDIALOG Nachricht übergeben werden soll.
Das Handle für das neu erstellte Dialogfeld.
Dieses Dialogfeld wird automatisch an das CDialogImpl
Objekt angefügt. Rufen Sie DoModal auf, um ein modales Dialogfeld zu erstellen. Die zweite Überschreibung oben wird nur mit CComControl verwendet.
Zerstört ein Dialogfeld ohne Modus.
BOOL DestroyWindow();
TRUE, wenn das Dialogfeld erfolgreich zerstört wurde; andernfalls FALSE.
Gibt WAHR zurück, wenn das Dialogfeld erfolgreich zerstört wurde; andernfalls FALSE.
Diese statische Funktion implementiert die Dialogfeldprozedur.
static LRESULT CALLBACK DialogProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
hWnd
[in] Das Handle für das Dialogfeld.
uMsg
[in] Die an das Dialogfeld gesendete Nachricht.
wParam
[in] Zusätzliche nachrichtenspezifische Informationen.
lParam
[in] Zusätzliche nachrichtenspezifische Informationen.
TRUE, wenn die Nachricht verarbeitet wird; andernfalls FALSE.
DialogProc
verwendet die Standardnachrichtenzuordnung, um Nachrichten an die entsprechenden Handler zu leiten.
Sie können außer Kraft setzen DialogProc
, um einen anderen Mechanismus zum Behandeln von Nachrichten bereitzustellen.
Erstellt ein modales Dialogfeld.
INT_PTR DoModal(
HWND hWndParent = ::GetActiveWindow(),
LPARAM dwInitParam = NULL);
hWndParent
[in] Das Handle für das Besitzerfenster. Der Standardwert ist der Rückgabewert der GetActiveWindow Win32-Funktion.
dwInitParam
[in] Gibt den Wert an, der an das Dialogfeld im lParam-Parameter der WM_INITDIALOG Nachricht übergeben werden soll.
Bei erfolgreicher Ausführung der Wert des nRetCode-Parameters , der im Aufruf von EndDialog angegeben ist. Andernfalls: -1
Dieses Dialogfeld wird automatisch an das CDialogImpl
Objekt angefügt.
Rufen Sie "Erstellen" auf, um ein Dialogfeld ohne Modus zu erstellen.
Zerstört ein modales Dialogfeld.
BOOL EndDialog(int nRetCode);
nRetCode
[in] Der wert, der von CDialogImpl::D oModal zurückgegeben werden soll.
TRUE, wenn das Dialogfeld zerstört wird; andernfalls FALSE.
EndDialog
muss über die Dialogfeldprozedur aufgerufen werden. Nachdem das Dialogfeld zerstört wurde, verwendet Windows den Wert nRetCode als Rückgabewert für , für DoModal
den das Dialogfeld erstellt wurde.
Hinweis
Rufen Sie nicht auf EndDialog
, um ein Dialogfeld ohne Modus zu zerstören. Rufen Sie stattdessen CWindow::D estroyWindow auf.
Gibt die aktuelle Dialogfeldprozedur zurück DialogProc
.
virtual WNDPROC GetDialogProc();
Die aktuelle Dialogfeldprozedur.
Überschreiben Sie diese Methode, um die Dialogprozedur durch ihre eigene zu ersetzen.
Konvertiert (ordnet) die Dialogfeldeinheiten des angegebenen Rechtecks in Bildschirmeinheiten (Pixel) um.
BOOL MapDialogRect(LPRECT lpRect);
lpRect
Verweist auf ein Objekt oder eine CRect
RECT-Struktur, die die Clientkoordinaten des Updates empfängt, die den Aktualisierungsbereich umschließen.
Nonzero, wenn das Update erfolgreich ist; 0, wenn das Update fehlschlägt. Um erweiterte Fehlerinformationen abzurufen, rufen Sie GetLastError
auf.
Die Funktion ersetzt die Koordinaten in der angegebenen RECT
Struktur durch die konvertierten Koordinaten, wodurch die Struktur verwendet werden kann, um ein Dialogfeld zu erstellen oder ein Steuerelement in einem Dialogfeld zu positionieren.
Wird aufgerufen, nachdem die letzte Nachricht empfangen wurde (in der Regel WM_NCDESTROY
).
virtual void OnFinalMessage(HWND hWnd);
hWnd
[in] Ein Griff zum zerstörten Fenster.
Beachten Sie, dass Sie löschen möchten, wenn Sie Ihr Objekt bei der Fenstervernichtung automatisch löschen möchten, können Sie dies hier aufrufen.
Wird nur einmal aufgerufen, wenn die erste Nachricht empfangen wird, um nachrichten zu verarbeiten, die an das Dialogfeld gesendet werden.
static LRESULT CALLBACK StartDialogProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
hWnd
[in] Das Handle für das Dialogfeld.
uMsg
[in] Die an das Dialogfeld gesendete Nachricht.
wParam
[in] Zusätzliche nachrichtenspezifische Informationen.
lParam
[in] Zusätzliche nachrichtenspezifische Informationen.
Die Fensterprozedur.
Nach dem anfänglichen Aufruf StartDialogProc
von , DialogProc
wird als Dialogprozedur festgelegt, und weitere Aufrufe gehen dorthin.