Delphi-PRAXiS
Seite 28 von 35   « Erste     18262728 2930     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Virtual Piano (https://www.delphipraxis.net/158944-virtual-piano.html)

Namenloser 7. Jun 2011 12:31

AW: Virtual Piano
 
Nur mal so ’ne Anregung, da der Source ja jetzt anscheinend eh öffentlich ist: Wollt ihr nicht vielleicht ein richtiges Repository dafür aufsetzen, statt immer den Code hin- und herzukopieren? Google Code wäre z.B. eine Möglichkeit (man hat die Wahl zwischen SVN und Mercurial – ich würde letzteres empfehlen wegen des einfacheren Mergings) oder auch SourceForge. Wäre denke ich deutlich eleganter und weniger Arbeit für euch beide...

EWeiss 7. Jun 2011 12:43

AW: Virtual Piano
 
Zitat:

Zitat von NamenLozer (Beitrag 1105036)
Nur mal so ’ne Anregung, da der Source ja jetzt anscheinend eh öffentlich ist: Wollt ihr nicht vielleicht ein richtiges Repository dafür aufsetzen, statt immer den Code hin- und herzukopieren? Google Code wäre z.B. eine Möglichkeit (man hat die Wahl zwischen SVN und Mercurial – ich würde letzteres empfehlen wegen des einfacheren Mergings) oder auch SourceForge. Wäre denke ich deutlich eleganter und weniger Arbeit für euch beide...

Wäre eine überlegung wert. ;)

gruss

blackfin 7. Jun 2011 12:46

AW: Virtual Piano
 
vor allem könnt ihr dann gleichzeitig dran rumwerkeln und müsst nicht immer auf den anderen warten :-)

EWeiss 7. Jun 2011 12:48

AW: Virtual Piano
 
Zitat:

Zitat von blackfin (Beitrag 1105039)
vor allem könnt ihr dann gleichzeitig dran rumwerkeln und müsst nicht immer auf den anderen warten :-)

Ist aber auch streßig wenn man nicht über genügend englisch kenntnisse verfügt ;)
Und Sourceforce spamt mir jetzt schon mein Postfach voll.
Nach der erstellung von BassVis_Wrapper..

EDIT:
Oder darf ich hier nicht mehr posten? :cry:

gruss

alfold 7. Jun 2011 13:53

AW: Virtual Piano
 
Naja, so schlimm wird es ja nicht!
Ich brauch ja ne ganze weile. Erst wenn ich soweit fertig bin schick ich ihm die überarbeitete zu. EWeiss wird selbst nichts ändern, in meinem Sinne. Würde ich auch nicht verlangen, da es ja so schon funktioniert:wink:

Es ging Ihm ja auch nicht darum was ich möchte, sondern um zu zeigen das man auch ohne VCL tolle Oberflächen gestallten kann. :thumb:

Es wird also kein Codegespame in dieser hinsicht geben:wink:

Der Rest erfolgt eh per Mail:P

@NamenLozer: Idee ist gut, nur wie man sowas macht:gruebel:
@blackfin: Warten muss er eh, bin ja nicht der schnellste:zwinker:
Gruss alfold

EWeiss 7. Jun 2011 13:55

AW: Virtual Piano
 
Zitat:

Warten muss er eh, bin ja nicht der schnellste
Kein problem für mich.

gruss

EWeiss 18. Jun 2011 18:07

AW: Virtual Piano
 
@NamenLozer

Wenn du zeit hast kannst nochmal testen ob die Listbox jetzt bei dir funktioniert?
Hab da einiges umgestellt vor allem was das ansprechen der ClientProc aus der DLL angeht.
Zusätzlich noch einen visuellen Rect erstellt für Selektierte Auswahl.

gruss

Namenloser 18. Jun 2011 19:50

AW: Virtual Piano
 
Liste der Anhänge anzeigen (Anzahl: 1)
Leider nein :(
Beim Start kommt jetzt die Meldung im Anhang (vorher passierte gar nichts, und das Programm hing nur).

EWeiss 18. Jun 2011 22:20

AW: Virtual Piano
 
Zitat:

Zitat von NamenLozer (Beitrag 1107228)
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

Delphi-Quellcode:
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

Namenloser 18. Jun 2011 22:37

AW: Virtual Piano
 
Moment mal – deine WndProc ist eine Methode eines Objekts? Woher soll denn dann der implizite Parameter
Delphi-Quellcode:
self
kommen, wenn die WndProc von Windows aufgerufen wird? Das könnte durchaus der Grund für den Crash sein.

Änder doch mal die Deklaration in
Delphi-Quellcode:
class procedure TSkinListBox.ClientWndProc(var Message: TMessage); static;
. Das ist dann quasi wie eine „normale“ Procedure, nur in einer Klasse deklariert.



edit: Okay, sorry, kannte
Delphi-Quellcode:
MakeObjectInstance
nicht. Gerade nachgelesen, was das ist – damit sollte es wohl doch in Ordnung sein.

edit 2: Allerdings könnte es sein, dass diese Methode mit der Datenausführungsverhinderung DEP (die ich aktiviert habe) in Konflikt gerät. Denn anscheinend wird dabei Code on-the-fly generiert/alloziiert, allerdings konnte ich nirgends sehen, dass für den Speicherbereich das
Delphi-Quellcode:
PAGE_EXECUTE
-Flag gesetzt würde. Vielleicht könntest du es ja doch mal so probieren, wie ich oben vorgeschlagen habe?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.
Seite 28 von 35   « Erste     18262728 2930     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz