Inhalt
Context Help (c) V-1.0

Context Help Version 1.0

© Copyright by U. Becker

Systemvorausetzung: Windows 3.1 oder Windows 95 und min. PC 368.

 	Information

 	Beschreibung

 	Funktionen

 	Beispiel in GFA-Basic

 	Bestellinformation


Information

Context Hilfe

Version 1.0

Copyright (c) 1997

Ulrich Becker

Nordendstraße 73 - 75

D - 63225 Langen

Alle Rechte vorbehalten. Kein Teil des Programmes der Dateien oder der  Anleitung darf ohne Schriftliche Genehmigung des Autors in welcher Form und  mit welchen Mitteln auch immer, sei es auf elektronischem oder mechanischen  Weg kopiert, vervielfältigt oder übermittelt werden.

Autor:	Ulrich Becker

Copyright (c) 1997

von

Ulrich Becker

Nordendstraße 73 - 75

D - 63225 Langen

Der Autor hat alle Sorgfalt walten lassen, um ein Programm zu entwickeln, daß  einwandfrei und Fehlerfrei läuft. Der Autor übernimmt keine Gewähr dafür, daß  das Programm funktionsfähig und frei von Schutzrechten Dritter ist.

Das Programm ist geschrieben mit GFA-Basic von GFA Systemtechnik.


Programm Beschreibung
Die Programm Beschreibung für Context Help DLL

Laden Sie das Modul Conthelp.dll und erzeugen Sie mit CreateContextHelp  eine neue Context Hilfe. Rufen Sie dann ShowContextHelp auf um die  Hilfe auf dem Bildschirm anzuzeigen. Wenn Sie mit der Rechten Maustaste auf die Context  Hilfe klicken, erscheint ein Context Menu mit folgenden Einträgen:

Menu Text	Beschreibung

Kopieren	Der Context Hilfe Text wird in die Zwischenablage kopiert und steht dort  im CF_TEXT Format zur Verfügung.

Thema drucken	Es wird die Druckerauswahl angezeigt und nach drücken auf  den Ok Schalter wird der Context Hilfe Text auf dem ausgewähltem Drucker ausgedruckt.

Die Funktion DeleteContextHelp gibt die erzeugten Resourcen  wieder frei. Haben Sie CreateContextHelp mit dem Handle eines  Fensters aufgerufen, müssen Sie DeleteContextHelp vor  dem löschen des Fensters aufrufen.

Siehe auch

Funktionen

CreateContextHelp

ShowContextHelp

DeleteContextHelp

Beispiel in GFA-Basic


Funktionen
Die Funktionen der Context Help DLL

Das Modul hat den Namen Conthelp.dll und enthält die folgenden Funktionen:

CreateContextHelp	Erzeugt die Context Hilfe

ShowContextHelp	Die Context-Hilfe anzeigen

DeleteContextHelp	Löscht die Context Hilfe und gibt  die Resourcen wieder frei


CreateContextHelp

BOOL: CreateContextHelp( HWND: hWnd )

Die Funktion CreateContextHelp erzeugt eine Context Hilfe in der Sie dann mit  ShowContextHelp eine Context Hilfe anzeigen können.

Parameter	Beschreibung

hWnd	Ist das Handle eines Fensters, dem die Context Hilfe zugeordnet wird. Ist hWnd  gleich NULL, dann wird sie keinem Fenster zugeordnet und steht Systemweit zur verfügung.

Rückgabewert

Ist die Funktion Erfolgreich abgeschlossen, wird TRUE zurück gegeben andernfalls  wird NULL zurück gegeben.

Hinweis

Wenn Sie ShowContextHelp aufrufen und Sie haben mit CreateContextHelp  noch keine Context Hilfe gestartet, wird CreateContextHelp(NULL) automatisch gestartet.  Die Funktion muß unbedingt mit DeleteContextHelp gelöscht werden um die  Resourcen wieder frei zu geben. Sollten Sie CreateContextHelp mit dem Handle eines  Fensters aufgerufen haben, müssen Sie DeleteContextHelp vor dem löschen  des Fensters aufrufen.

Siehe auch

ShowContextHelp

DeleteContextHelp

Beispiel in GFA-Basic


ShowContextHelp

BOOL: ShowContextHelp( HWND: hWnd , POINT: pt , LPTSTR: lpString )

Die Funktion ShowContextHelp zeigt eine Context Hilfe auf dem Bildschirm an.

Parameter	Beschreibung

hWnd	Ist das Handle des Contol-Elements für das die Context Hilfe angezeigt werden  soll. Das Handle wird benötigt um die X-Koordinate des Fensters zu berechnen. Ist hWnd  NULL oder ein ungültiges Handle, dann wird die Y-Koordinate der Mausposition benutzt.

pt	Enthält im LOWORD(pt) die X- und  im HIWORD(pt) die Y-Bildschirmkoordinaten des Mauszeigers.

lpString	Zeigt auf einen NULL-terminierten String, der den anzuzeigenden Text  enthält.

Rückgabewert

Ist die Funktion Erfolgreich abgeschlossen, wird TRUE zurück gegeben andernfalls  wird NULL zurück gegeben.

Hinweis

Wenn Sie ShowContextHelp aufrufen ohne das Sie mit CreateContextHelp  die Context Hilfe geladen haben, wird CreateContextHelp(NULL) automatisch gestartet.

Siehe auch

CreateContextHelp

DeleteContextHelp

Beispiel in GFA-Basic


DeleteContextHelp

BOOL: DeleteContextHelp()

Die Funktion DeleteContextHelp Löscht eine Context Hilfe die mit  CreateContextHelp erzeugt wurde.

Rückgabewert

Ist die Funktion Erfolgreich abgeschlossen, wird TRUE zurück gegeben andernfalls  wird NULL zurück gegeben.

Hinweis

Die Funktion gibt die mit CreateContextHelp erzeugten Resourcen  wieder frei. Haben Sie CreateContextHelp mit dem Handle eines  Fensters aufgerufen haben, müssen Sie DeleteContextHelp vor dem löschen des Fensters  aufrufen.

Siehe auch

CreateContextHelp

ShowContextHelp

Beispiel in GFA-Basic


Beispiel in GFA-Basic
Ein Beispiel von Context Help in GFA-Basic

GOSUB TestContextHelp

PROCEDURE Init

'

DLL #1,"Conthelp.dll"                     ' Lade die DLL (Sollte sich im gleichen Ordner befinden)

DECL WORD CreateContextHelp(W)          ' Erzeugt die Context Hilfe

DECL WORD ShowContextHelp(W,L,L)        ' Die Context-Hilfe anzeigen

DECL WORD DeleteContextHelp()           ' Löscht die Context Hilfe und gibt die Resourcen wieder frei

ENDDLL

'

DLL #2,"user"

DECL WORD SetWindowContextHelpId(W,L)   ' Zuweisen einer Id-Nummer für die Context-Hilfe

DECL LONG GetWindowContextHelpId(W)     ' Abfragen der Context-Hilfe Id-Nummer

ENDDLL

'

WS_EX_CONTEXTHELP& = $0400                ' Der erweitertete Stil für Fenster die ein "?" Schalter in der Titelzeile haben

WM_HELP&           = $0053                ' Win 95 Nachricht. Nach Klick auf "?" und dann ein Control-Element gesendet wird

WM_CONTEXTMENU&    = $007B                ' Win 95 Nachricht. Die Rechte Maustaste wurde betätigt

DS_3DLOOK&         = 4                    ' Win 95 Stil für Drei dimensionale Dialogbox und Elemente

'

HELPINFO_WINDOW&   = 1                    ' Hilfe Abfrage von einem Menu-Element

HELPINFO_MENUITEM& = 2                    ' Hilfe Abfrage von einem Control-Element

'

TYPE HELPINFO:                            ' HelpInfo Struktur

- INT   cbSize                            ' Länge der Struktur

- WORD  iContextType                      ' Entweder HELPINFO_WINDOW oder HELPINFO_MENUITEM

- WORD  iCtrlId                           ' Control Id               oder Menuitem Id

- CARD  hItemHandle                       ' hWnd des Controls        oder hMenu

- DWORD dwContextId                       ' Context Id der mit dem Control-Item verbunden ist

- LONG  MousePos                          ' Maus Position in Bildschirm koordinaten

ENDTYPE

HELPINFO:HelpInfo.                        ' Zuweisen einer HelpInfo Variablen

'

OPTION BASE 1

DIM Context$(4)                           ' Dimensionieren und zuteilen der Texte für die Hilfe

Context$(1) = "Das ist der erste Schalter im Dialogfenster."

Context$(2) = "Das ist auch ein Schalter im Dialogfenster Context Help Test. Wenn Sie den Schalter drücken geschieht auch nichts."

Context$(3) = "Dies ist ein Radiobutton."

Context$(4) = "Das ist eine Combobox."

'

DIALOG #1,30,30,300,200,"Context Help Test",DS_MODALFRAME | WS_SYSMENU

~SetWindowLong(DLG(1),GWL_EXSTYLE,WS_EX_CONTEXTHELP& | WS_EX_DLGMODALFRAME) ' Setze erweiterten Stil - "?" + Dicker Ramen

DEFPUSHBUTTON "Schalter 1",101, 40, 20, 90, 30

PUSHBUTTON    "Schalter 2",102, 40, 60, 90, 30

RADIOBUTTON   "Schalter 3",103, 40,100, 90, 30

COMBOBOX      ""          ,104,140,100, 90,120

ENDDIALOG

FOR i& = 101 TO 104

~^SetWindowContextHelpId(DLG(1,i&),SUB(i&,100)) ' Weise dem Contol-Element eine Id-Nummer für die Context-Hilfe zu

NEXT i&

'

~^CreateContextHelp(NULL)                 ' Erzeuge eine Context-Hilfe

'

~^CreateContextHelp(DLG(1))                   ' Erzeuge eine Context-Hilfe - ACHTUNG: Nur für den Compiler!!!!

'

SHOWDIALOG #1

'

ID_DIREKT& = 99                           ' Die Variable für das Popup-Menu

'

PopupMenu& = CreatePopupMenu()            ' Erzeuge ein Popup-Menu

~AppendMenu(PopupMenu&,MF_STRING,ID_DIREKT&,"Direkt&hilfe") ' Füge dem Popup-Menu das Element hinzu

'

CB DLG(1) NULL TO TRUE CallBack()         ' Weise der Dialogbox die CallBack für Nachrichten zu

RETURN

PROCEDURE TestContextHelp

GOSUB Init                    ' Aufruf der Initialisierung

'

REPEAT

GETEVENT

UNTIL MENU(1) = 4             ' Verlasse die Schleife wenn das Schliessen Symbol in der Titelleiste gewählt ist

'

~DestroyMenu(PopupMenu&)      ' Lösche das Popup-Menu

~^DeleteContextHelp()         ' Diese Funktion sollte vor schliessen des Hauptfensters gelöscht werden!!!!

CLOSEDIALOG #1                ' Schliesse die Dialogbox DLG(1)

FREEDLL 1                     ' DLL Conthelp.dll freigeben

FREEDLL 2                     ' DLL user freigeben

'

END                           ' Programm Ende

RETURN

PROCEDURE CallBack(hWnd&,Mess&,wParam&,lParam%)

LOCAL CtrlId&,ContextId&

TRY

SWITCH Mess&

CASE WM_HELP&                                       ' Ein Element hat die WM_HELP Nachricht gesendet

'                                                 ' lParam% zeigt auf die HelpInfo Struktur

RETVAL ^ShowContextHelp( {lParam%}.hItemHandle , {lParam%}.MousePos , Context$({lParam%}.dwContextId) )

CASE WM_CONTEXTMENU&                                ' Die Rechte Maustaste wurde gedrückt

ContextId& = ^GetWindowContextHelpId(wParam&)     ' Die Id der Context-Hilfe von Control-Element (wParam&) ermitteln

IF ContextId& > 0                                 ' Wenn Control-Element eine ContextHelpId besitzt

CtrlId& = GetDlgCtrlID(wParam&)                 ' Die Id des Control-Elements (wParam&) ermitteln

HelpInfo.cbSize       = LEN(HelpInfo.)          ' Füllen der HelpInfo-Struktur (LEN(HelpInfo.) = Länge der Struktur)

HelpInfo.iContextType = HELPINFO_WINDOW&        '                              (HELPINFO_WINDOW& = Type)

HelpInfo.iCtrlId      = CtrlId&                 '                              (CtrlId& = Id des Control-Elements)

HelpInfo.hItemHandle  = wParam&                 '                              (wParam& = Handle des Contol-Elements)

HelpInfo.dwContextId  = ContextId&              '                              (ContextId& = Id der Context-Hilfe)

HelpInfo.MousePos     = lParam%                 '                              (lParam% = Die Mausposition)

~TrackPopupMenu(PopupMenu&,NULL,LOWORD(lParam%),HIWORD(lParam%),NULL,hWnd&,NULL) ' Popup-Menu aufrufen

ENDIF

RETVAL NULL

CASE WM_COMMAND

IF wParam& = ID_DIREKT&                           ' Wenn der Eintrag "Direkthilfe" vom Popup-Menu ausgewählt wurde

POSTMESSAGE -1,WM_HELP&,NULL,*HelpInfo.         ' Sende Nachricht WM_HELP und übergebe HelpInfo-Struktur

'~^ShowContextHelp(HelpInfo.hItemHandle,HIWORD(HelpInfo.MousePos),Context$(HelpInfo.dwContextId)) ' Rufe Context-Help

ENDIF

RETVAL NULL

ENDSWITCH

CATCH

RETURN


Bestellinformation

Zum Lieferumfang von Context Hilfe V-1.0 gehören folgende Dateien

Modul	Beschreibung

Conthelp.dll	Das Library was Sie in Ihre Programme einbinden und mit ihnen auch  weitergeben können.

Conthelp.hlp	Die Hilfe Datei die Ihnen den umgang mit Conthelp.dll erklärt.

Testcnth.lst	Den Quellcode aus dieser Hilfe-Datei Beispiel in GFA-Basic.

Sie können die Context Hilfe V-1.0 unter folgender Adresse bestellen:

SCHOLZ - SOFTWARE

Oberdorf 39

D - 64572 Worfelden

Tel.: 06152/86524

Fax.: 06152/81528

Der Preis beträgt DM 20,-.