| Hier soll aus Gründen der leichteren Nachvollziehbarkeit nur ein sehr einfaches Beispiel zur Verwendung von Dialogressourcen präsentiert werden. Selbstverständlich stehen mit Dialogressourcen noch weitere, fortgeschrittenere Möglichkeiten bereit. Die Funktion CreateDialogParam Die Funktion CreateDialogParam wird wie folgt deklariert: Private Declare Function CreateDialogParam _
Lib "user32.dll" _
Alias "CreateDialogParamA" _
( _
ByVal hInstance As Long, _
ByVal lpName As String, _
ByVal hWndParent As Long, _
ByVal lpDialogFunc As Long, _
ByVal lParamInit As Long _
) As Long Listing 1: Deklaration der Funktion CreateDialogParam. Im Parameter hInstance wird die Zugriffsnummer der Instanz der Anwendung angegeben, also App.hInstance, lpName ist der Name der Dialogressource in der Ressourcendatei in Form einer Zeichenfolge, hWndParent gibt das Fenster an, das als Elternfenster verwendet werden soll, lpDialogFunc ist ein Zeiger auf die Rückrufprozedur für die Dialogmeldungen und der Parameter lParamInit ist nicht relevant, wir übergeben im Beispiel den Wert 0&. Als Rückgabewert wird die Zugriffsnummer des Dialogs geliefert, tritt ein Fehler auf, dann ist der Rückgabewert 0. Die Funktion EndDialog EndDialog wird verwendet, um den Dialog wieder zu entladen. Die Deklaration sieht folgendermassen aus: Private Declare Function EndDialog Lib "user32.dll" ( _
ByVal hDlg As Long, _
ByVal nResult As Long _
) As Long Listing 2: Deklaration der Funktion EndDialog. Der Parameter nResult ist hier nicht relevant, hDlg ist die Zugriffsnummer des Dialogs (der Rückgabewert von CreateDialogParam). Die Rückrufprozedur DialogProc Wie bereits unter CreateDialogParam angeführt muss unter lpDialogFunc ein Zeiger auf eine benutzerdefinierte Rückruffunktion übergeben werden. Dies ist seit VB5 über den Operator AddressOf möglich. Laut Windows Platform SDK-Dokumentation hat diese Rückruffunktion folgendes Aussehen: bool CALLBACK DialogProc(
HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ); Listing 3: Prototyp der Rückrufprozedur DialogProc. Übersetzt man dies in Visual Basic-Syntax, sieht der Kopf der Funktion wie folgt aus: Public Function DialogProc( _
ByVal hWnd As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long _
) As Long Listing 4: Der Kopf der Funktion DialogProc in Visual Basic. Es ist zu beachten, dass alle Parameter als Wertparameter deklariert werden. Wenn das Schlüsselwort ByVal weggelassen wird, stürzt die Anwendung ab. Visual Basic-Programmierer, die bereits Fenster gesubclasst haben, werden bemerken, dass die Funktionsdeklaration gleich wie die für eine Fensterprozedur aussieht. |