Datenübergabe an die Callback-Routine

Der Wert des nMsg-Parameters unterscheidet die verschiedenen Aufgaben. Die Werte sind die Konstanten, die mit LL_­CMND_­xxxx beginnen, z. B. LL_­CMND_­TABLE­FIELD zum Zeichnen des Hintergrunds eines Tabellenfeldes, oder LL_­INFO_­xxx sowie LL_­NTFY_­xxx-Nachrichten.

Abhängig von der Aufgabe, die Ihr Programm zu erledigen hat, erhält der Parameter lParam unterschiedliche Bedeutungen. Die einzelnen Bedeutungen stehen weiter unten bei den Aufgaben beschrieben. Es sind meist Strukturen (Records), auf die lParam zeigt, der Wert muss also über eine Typkonvertierung in einen Strukturzeiger verwandelt werden:

LRESULT CALLBACK _­extern LLCallback(INT wParam, LPARAM lParam,
    UINT_PTR lUserParam)
{
       PSCLLTABLEFIELD pSCF;

       switch (wParam)
       {
                case LL_­CMND_­TABLE­FIELD:
                        pSCF = (PSCLLTABLEFIELD)lParam;
                        // do something using pSCF;
                        break;
       }
       return(0);
}

Die Funktion muss immer einen definierten Wert zurückgeben. Wenn nicht anders gefordert, muss dieser Wert Null sein.

lUserParam ist der über

LlSetOption(hJob, LL_­OPTION_­CALLBACKPARAMETER, <Wert>);

übergebene Wert.

In objektorientierten Sprachen kann so ein Zeiger ("this", "self") übergeben werden.