Leider nein
Beim Start kommt jetzt die Meldung im Anhang (vorher passierte gar nichts, und das Programm hing nur).
Hmm das hilft mir nicht wirklich weiter.
Kann mit dem Skin bzw.. dem einlesen der Instrumentenlisten zu tun haben wenn die nicht
korrekt sind. (Alte Version)
Danke für's testen.
Das linken auf die WinProc der Hauptanwendung sollte eigentlich so OK sein!
Delphi-Quellcode:
FClientInstance,
FPrevClientProc: TFNWndProc;
nachdem ich das
Handle habe initialisiere ich die Subclass
SubClass(FHandle);
Delphi-Quellcode:
procedure TSkinListBox.SubClass(WinHandle: HWND);
begin
FClientInstance := MakeObjectInstance(ClientWndProc);
FPrevClientProc := Pointer(GetWindowLong(WinHandle, GWL_WNDPROC));
SetWindowLong(WinHandle, GWL_WNDPROC, Integer(FClientInstance));
end;
Delphi-Quellcode:
procedure TSkinListBox.ClientWndProc(var Message: TMessage);
begin
with Message do
begin
case Msg of
WM_ERASEBKGND:
Result := ListBoxProc(FHandle, integer(Msg), Message.WParam, Message.LParam);
WM_MOUSEWHEEL:
Result := ListBoxProc(FHandle, integer(Msg), Message.WParam, Message.LParam);
WM_PAINT:
Result := ListBoxProc(FHandle, integer(Msg), Message.WParam, Message.LParam);
WM_LBUTTONUP:
Result := ListBoxProc(FHandle, integer(Msg), Message.WParam, Message.LParam);
WM_KILLFOCUS:
Result := ListBoxProc(FHandle, integer(Msg), Message.WParam, Message.LParam);
end;
if (Result = 0) then
Result := CallWindowProc(FPrevClientProc, FHandle, Msg, wParam, lParam);
end;
end;
und dann.. bla bla
Delphi-Quellcode:
function TSkinListBox.ListBoxProc(WinHandle: HWND; Msg: UINT; wP: WParam; lP: LParam): LRESULT; stdcall;
begin
...
Result := CallWindowProc(Pointer(FPrevClientProc), WinHandle, Msg, wP, lP);
end;
Kann mir jetzt nicht vorstellen das es daran liegen könnte (vermutung)
das die ListBoxProc privat deklariert ist.
gruss