Erstellen einer kontextabhängigen Popup-Hilfe mithilfe der Windows-API WinHelp()


Erweitert: Erfordert Expertencodierung, Interoperabilität und Mehrbenutzerkenntnisse.
Eine Microsoft Access 97-Version dieses Artikels finden Sie unter 141621 .

Zusammenfassung


Eine Alternative zur Anzeige des Online-Hilfesystems Ihrer Anwendung in einem separaten Fenster besteht darin, es in einem kleinen, schattierten Popupfenster in Ihrer Anwendung anzuzeigen. Dazu können Sie die Windows-API WinHelp()-Funktion mit ihrem HELP_CONTEXTPOPUP-Argument verwenden. In diesem Artikel erfahren Sie, wie Sie ein solches Hilfesystem implementieren. In diesem Artikel wird davon ausgegangen, dass Sie mit der Verwendung des Microsoft Windows-Hilfeworkshops zum Erstellen von Windows-Hilfedateien vertraut sind.

Weitere Informationen


Die Windows API WinHelp()-Funktion unterstützt eine große Anzahl von Optionen. Die Option HELP_CONTEXTPOPUP öffnet ein schattiertes Popupfenster, in dem Sie Hilfe anzeigen können. Dieses Fenster ähnelt dem Fenster, das sich öffnet, wenn Sie auf einen Glossareintrag (grüner, unterstrichener Text) im Microsoft Access-Hilfesystem klicken. Führen Sie die folgenden Schritte aus, um diese Funktion zu implementieren:
  • Erstellen Sie ein funktionierendes Hilfesystem, indem Sie die Eigenschaften HelpContextID und HelpFile für Ihre Formulare auf eine gültige Windows-Hilfedatei festlegen.
  • Leiten Sie die F1-Taste um, um eine benutzerdefinierte Funktion aufzurufen, die die Hilfedatei mit der Option HELP_CONTEXTPOPUP öffnet.
Beachten Sie, dass das Springen oder Verzweigen zu anderen Hilfethemen aus dem Popup-Hilfefenster von den in diesem Artikel beschriebenen Methoden nicht unterstützt wird. In den folgenden Schritten wird beschrieben, wie Sie die benutzerdefinierte Funktion zum Öffnen des Popup-Hilfefensters erstellen und wie Sie die Taste F1 umleiten: VORSICHT:Wenn Sie die Schritte in diesem Beispiel ausführen, ändern Sie die Beispieldatenbank Northwind.mdb. Sie können die Datei Northwind.mdb sichern und die folgenden Schritte in einer Kopie der Datenbank ausführen.

Zugang 2000, Access 2002 und Access 2003

  1. Microsoft Access starten
  2. Öffnen Sie die Beispieldatenbank Northwind.mdb oder das Beispielprojekt NorthwindCS.adp.
  3. Klicken Sie im Datenbankfenster im Abschnitt Objekteauf Modules.
  4. Klicken Sie auf Neu.
  5. Geben Sie im Visual Basic-Editor den folgenden Code ein oder fügen Sie ihn in den Abschnitt Deklarationen ein:
    Declare Function WinHelp Lib "user32" Alias "WinHelpA" _                 (ByVal hwnd As Long, _                  ByVal lpHelpFile As String, _                  ByVal wCommand As Long, _                  ByVal dwData As Long) As LongPublic Const HELP_CONTEXTPOPUP = &H8&
    HINWEIS:Möglicherweise sind einige Microsoft Windows-API-Funktionen in einer vorhandenen Microsoft Access-Bibliothek definiert. Daher können Ihre Erklärungen Duplikate sein. Wenn Sie eine Fehlermeldung zum doppelten Prozedurnamen erhalten, entfernen oder kommentieren Sie die Deklarationsanweisung in Ihrem Code.
  6. Fügen Sie den folgenden Code im Visual Basic-Editor an:
    Function Help32() As Boolean   On Local Error GoTo Help32_Err   Dim Cid As Long, Result As Long   On Error Resume Next   ' Get the HelpContextID of the active control.   ' The error is 2474 if no control is active.   Cid = Screen.ActiveControl.HelpContextId   If Cid = 0 Then      ' There is no control context ID, so check the form and get      ' the HelpContextID of the active form.      ' The error is 2475 if no form is active.      Cid = Screen.ActiveForm.HelpContextId   End If   ' If there is a context ID, open the Help file with context.   ' Specify your custom Help file for the second argument.   ' This example used the default help file NWIND9.HLP located   ' in the Office Samples folder.    ' If the NWIND9.HLP is not available, then replace the    ' specified path with a valid Winhelp file, and modify the code and     ' the HelpContextID of the Forms and Controls accordingly.   If Cid > 0 And Cid < 32767 Then      Result = WinHelp(Application.hWndAccessApp, _      "C:\Program Files\Microsoft Office\Office\Samples\nwind9.hlp", _      HELP_CONTEXTPOPUP, Cid)      Help32 = True   End IfHelp32_End:   Exit FunctionHelp32_Err:   MsgBox Err.Description   Resume Help32_EndEnd Function
  7. Speichern Sie das Modul als HelpModule.
  8. Schließen Sie den Visual Basic-Editor.
  9. Klicken Sie im Datenbankfenster im Abschnitt Objekteauf Makros.
  10. Klicken Sie auf Neu.
  11. Erstellen Sie das folgende neue Makro, um den F1-Schlüssel umzuleiten:
       Macro Name     Action       Action Arguments   --------------------------------------------------------      {F1}        RunCode      Function Name: Help32() 
  12. Speichern Sie das Makro als AutoKeys, und schließen Sie dann das Makro.
  13. Klicken Sie im Datenbankfenster unter dem Abschnitt Objekteauf Formulare.
  14. Doppelklicken Sie im rechten Bereich auf Lieferanten.
  15. Drücken Sie die Taste F1.
Beachten Sie, dass Microsoft Access die Hilfenachricht, die der helpContextID des Steuerelements oder des Formulars entspricht, in einem Popupfeld anzeigt.

Zugang 2007

  1. Microsoft Access starten
  2. Öffnen Sie die Beispieldatenbank Northwind2007.accdb.
  3. Klicken Sie auf der Registerkarte Erstellen auf den Pfeil nach unten unter Makro, und klicken Sie dann auf Modul.
  4. Fügen Sie im Visual Basic-Editor das folgende Codebeispiel in den Abschnitt Deklarationen ein.
    Declare Function WinHelp Lib "user32" Alias "WinHelpA" _                 (ByVal hwnd As Long, _                  ByVal lpHelpFile As String, _                  ByVal wCommand As Long, _                  ByVal dwData As Long) As LongPublic Const HELP_CONTEXTPOPUP = &H8&
    Hinweis Möglicherweise sind einige Microsoft Windows-API-Funktionen in einer vorhandenen Microsoft Access-Bibliothek definiert. Daher können Ihre Erklärungen Duplikate sein. Wenn Sie eine Fehlermeldung zum doppelten Prozedurnamen erhalten, entfernen oder kommentieren Sie die Deklarationsanweisung in Ihrem Code.
  5. Fügen Sie das folgende Codebeispiel im Visual Basic-Editor an.
    Function Help32() As Boolean   On Local Error GoTo Help32_Err   Dim Cid As Long, Result As Long   On Error Resume Next   ' Get the HelpContextID of the active control.   ' The error is 2474 if no control is active.   Cid = Screen.ActiveControl.HelpContextId   If Cid = 0 Then      ' There is no control context ID, so check the form and get      ' the HelpContextID of the active form.      ' The error is 2475 if no form is active.      Cid = Screen.ActiveForm.HelpContextId   End If   ' If there is a context ID, open the Help file with context.   ' Specify your custom Help file for the second argument.   ' This example used the default help file NWIND9.HLP located   ' in the Office Samples folder.    ' If the NWIND9.HLP is not available, then replace the    ' specified path with a valid Winhelp file, and modify the code and     ' the HelpContextID of the Forms and Controls accordingly.   If Cid > 0 And Cid < 32767 Then      Result = WinHelp(Application.hWndAccessApp, _      "C:\Program Files\Microsoft Office\Office\Samples\nwind9.hlp", _      HELP_CONTEXTPOPUP, Cid)      Help32 = True   End IfHelp32_End:   Exit FunctionHelp32_Err:   MsgBox Err.Description   Resume Help32_EndEnd Function
  6. Speichern Sie das Modul als HelpModule.
  7. Schließen Sie den Visual Basic-Editor.
  8. Klicken Sie auf der Registerkarte Erstellen auf Makro.
  9. Erstellen Sie das folgende neue Makro, um den F1-Schlüssel umzuleiten:
       Macro Name     Action       Action Arguments   --------------------------------------------------------      {F1}        RunCode      Function Name: Help32() 
  10. Speichern Sie das Makro als AutoKeys, und schließen Sie dann das Makro.
  11. Klicken Sie im linken Bereich auf Lieferanten.
  12. Doppelklicken Sie im linken Bereich auf Lieferantenliste.
  13. Drücken Sie die Taste F1.
Beachten Sie, dass Microsoft Access die Hilfenachricht, die der helpContextID des Steuerelements oder des Formulars entspricht, in einem Popupfeld anzeigt.

Informationsquellen


Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
828419 Erstellen eines HTML-Hilfesystems mithilfe der HTMLHelp-API oder der HTML-Hilfe bei Access
242433 Erstellen kontextsensitiver HTML-Hilfedateien