Rubrik: Hilfe (HLP und CHM) | VB-Versionen: VB4, VB5, VB6 | 13.02.03 |
HTMLHelp-Fenster positionieren Dieses Beispiel zeigt, wie sich das Hilfefenster (HTMLHelp) nach dem Aufruf beliebig positionieren und in seiner Größe ändern lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 16.008 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wie man das moderne HTMLHelp Hilfesystem in seiner eigenen Anwendung aufrufen kann, zeigt folgender Tipp: HTML-Hilfe aufrufen.
Die Position und die Größe des Hilfefensters lässt sich hierbei aber nicht festlegen. Wie das aber dennoch geht, zeigt nachfolgendes Beispiel. Wir benötigen hierzu zunächst den exakten Fenstertitel des Hilfefensters, den Sie - falls Sie die Hilfe selbst erstellt haben - ja bestens kennen sollten
Warum den exakten Fenstertitel? Ganz einfach: Um ein Fenster in der Größe verändern oder neu positionieren zu können, verwenden wir die MoveWindow API-Funktion. Diese erwartet aber - wie fast alle API's - das Handle des besagten Window. Wenn man nun den exakten Fenstertitel kennt, dann kann man das Fensterhandle selbst über die FindWindow API-Funktion herausbekommen.
Und das ganze sieht dann wie folgt aus:
Option Explicit ' HTML-Help Private Declare Function HtmlHelp Lib "hhctrl.ocx" _ Alias "HtmlHelpA" ( _ ByVal hwndCaller As Long, _ ByVal pszFile As String, _ ByVal uCommand As Long, _ ByVal dwData As Long) As Long Const HH_DISPLAY_TOPIC = &H0 Const HH_HELP_CONTEXT = &HF ' Fenster verschieben/positionieren Private Declare Function MoveWindow Lib "user32" ( _ ByVal hwnd As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long, _ ByVal bRepaint As Long) As Long ' Fensterhandle ermitteln Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long
Private Sub cmdHelp_Click() ' Hilfe aufrufen (Startseite) Dim sHelpFile As String sHelpFile = App.Path & "\MyHelp.chm" HtmlHelp 0, sHelpFile, HH_DISPLAY_TOPIC, ByVal 0& ' Jetzt Window suchen (exakter Fenstertitel muss ' bekannt sein!) Dim sTitle As String Dim nhWnd As Long sTitle = "Hilfe zu MyProgram" nhWnd = FindWindow(vbNullString, sTitle) ' Fenster gefunden...? If nhWnd <> 0 Then ' ... dann entsprechend positionieren ' Breite: 400 Pixel, Höhe 300 Pixel ' Position: 100, 150 MoveWindow nhWnd, 100, 150, 400, 300, True End If End Sub