Delphi-Quellcode:
function WndProc(hWindow: HWND; dwMsg: ZDWORD; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
wnd: PWindowBase;
msg : TMSG;
begin
if dwMsg = WM_NCCREATE then
begin
wnd := PWindowBase(PCreateStruct(nlParam)^.lpCreateParams);
SetWindowLongPtr(hWindow, GWL_USERDATA, Integer(wnd));
end;
wnd:= PWindowBase(GetWindowLongPtr(hWindow, GWL_USERDATA));
if Assigned(wnd) then
begin
ZeroMemory(@msg, SizeOf(msg));
msg.hwnd := hWindow;
msg.message := dwMsg;
msg.wParam := wParam;
msg.lParam := lParam;
wnd^.EventHandler(msg); // in WindowBase is diese funktion virtuell (hier crash es
Exit;
end;
Result := DefWindowProc(hWindow, dwMsg, nwParam, nlParam);
end;
WindowBase = class
..
public
function EventHandler(msg: TMsg): Boolean; virtual;
end;
dabei crash es bei aufruf von Eventhandler wegen virtual, aber eventhandler is fuer override in abgeleitete klassen vorgesehen. daher virtuel wie kann ich dies denn eure meinung nach am besten loesen?
vielen dank fuer hilfen