Размещаем локальный map в модуле оконной процедуры.
Код: Выделить всё
MAP
CSubClassFunc(UNSIGNED,UNSIGNED,UNSIGNED,LONG),LONG,PASCAL
END
Код: Выделить всё
SavedProc = window{PROP:WndProc}
window{PROP:WndProc} = ADDRESS(CSubClassFunc)
Код: Выделить всё
CSubClassFunc PROCEDURE(UNSIGNED shWnd,UNSIGNED swMsg,UNSIGNED swParam,LONG slParam)
LOC:WM_QUERYENDSESSION EQUATE(0011h)
LOC:WM_ENDSESSION EQUATE(0016h)
LOC:WM_PAINT EQUATE(000Fh)
LOC:WM_ERASEBKGND EQUATE(0014h)
Nerr UNSIGNED
CODE
CASE swMsg
OF LOC:WM_QUERYENDSESSION
RETURN(True)
OF LOC:WM_ENDSESSION
POST(Event:CloseDown,,1)
POST(MSERV_ICONTRAY,,1)
RETURN(True)
OF MSERV_ICONTRAY
IF slParam=202h
POST(MSERV_ICONTRAY,,1)
End
RETURN(0)
ELSE
IF INRANGE(swMsg,MSERV_GETNAME,MSERV_RECV)
MSrv.SubClassFuncMServ(shWnd,swMsg,swParam,slParam)
END
END
RETURN(CallWindowProc(SavedProc,shWnd,swMsg,swParam,slParam))