Thema: Virtual Piano

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#279

AW: Virtual Piano

  Alt 18. Jun 2011, 22:20
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
  Mit Zitat antworten Zitat