29.11.2012 Aufrufe

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Callbacks und Notifications<br />

11.3. Definition einer Callbackroutine<br />

Eine Callbackroutine wird wie ein normaler Windows-Callback definiert. Zu speziellen<br />

Fragen wie Compiler-Switches bedienen Sie sich bitte des Handbuchs zu Ihrem Compiler.<br />

Die allgemeine Form des Callbacks ist in C-Notation<br />

LRESULT CALLBACK _extern LLCallback(INT nMsg, LONG lParam,DWORD lUserParam);<br />

bzw. in Delphi-Notation:<br />

function LLCallback(nMsg: integer; lParam: longint, lUserParam: longint) :<br />

longint; external;<br />

Die Funktion kann direkt übergeben werden:<br />

LlSetNotificationCallback(hJob,(FARPROC)LLCallback);<br />

Ab jetzt kann Ihre Routine von <strong>List</strong> & <strong>Label</strong> aufgerufen werden, wenn dies nötig ist.<br />

Wichtig ist, am Programmende den Callback wieder auf NULL zu setzen:<br />

134<br />

LlSetNotificationCallback(hJob,(FARPROC)NULL);<br />

11.4. Datenübergabe an die Callbackroutine<br />

Der Wert des nMsg-Parameters unterscheidet die verschiedenen Aufgaben. Die Werte<br />

sind die Konstanten, die mit LL_CMND_xxxx beginnen, z.B. LL_CMND_TABLEFIELD zum<br />

Zeichnen des Hintergrunds eines Tabellenfeldes, oder LL_INFO_xxx sowie LL_NTFY_xxx-<br />

Nachrichten.<br />

Abhängig von der Aufgabe, die Ihr Programm zu erledigen hat, erhält der Parameter<br />

lParam unterschiedliche Bedeutungen. Die einzelnen Bedeutungen stehen weiter unten<br />

bei den Aufgaben beschrieben. Es sind meist Strukturen (Records), auf die lParam zeigt,<br />

der Wert muss also über eine Typkonvertierung in einen Strukturzeiger verwandelt werden:<br />

LRESULT CALLBACK _extern LLCallback(INT wParam, LONG lParam, LONG lUserParam)<br />

{<br />

PSCLLTABLEFIELD pSCF;<br />

switch (wParam)<br />

{<br />

case LL_CMND_TABLEFIELD:<br />

pSCF = (PSCLLTABLEFIELD)lParam;<br />

// do something using pSCF;<br />

break;<br />

}<br />

return(0);<br />

}<br />

Die Funktion muss immer einen definierten Wert zurückgeben. Wenn nicht anders gefordert,<br />

muss dieser Wert Null sein.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!