Zu einer Nachricht gehören drei Parameter: nMsg, wParam und lParam in der folgenden Definition Ihres Nachrichten-Callbacks (nennt sich hier Fensterroutine, ist aber nichts anderes als ein Callback!)
LRESULT WINAPI MyWndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam);
Der Nachrichtenwert, den List & Label benutzt, kann über LlGetNotificationMessage() abgefragt werden. Alternativ könnte man über LlSetNotificationMessage() einen anderen aussuchen.
wParam ist hier unsere Aufgaben-Konstante und lParam zeigt auf eine Struktur des Typs scLlCallback:
struct
scLlCallback
{
int _nSize;
LPARAM _lParam;
LRESULT
_lResult;
UINT_PTR
_lUserParameter;
}
In dieser Struktur stecken nun die erforderlichen _lParam (als Parameterwert) und _lResult (als Rückgabewert).
nLLMessage =
LlGetNotificationMessage(hJob);
//...
//...in the window
procedure...
if (wMsg ==
nLLMessage)
{
PSCLLCALLBACK pSC;
PSCLLTABLEFIELD pSCF;
pSC =
(PSCCALLBACK)lParam;
switch
(wParam)
{
case
LL_CMND_TABLEFIELD:
pSCF =
(PSCLLTABLEFIELD)pSC->_lParam;
// do
something;
pSC._lResult =
0;
break;
}
}
_lUserParam ist der über
LlSetOption(hJob, LL_OPTION_CALLBACKPARAMETER, <Wert>);
übergebene Wert.
In objektorientierten Sprachen kann so ein Zeiger ("this", "self") übergeben werden.
Wenn kein Rückgabewert gefordert wird, braucht das _lResult-Feld nicht verändert zu werden, es steht als Voreinstellung auf Null.