AW: Virtual Piano
Zitat:
ist nicht falsch aber auch nicht richtig, halt ein überbleibsel (Gewohnheit) aus meiner VB zeit. Glaube nicht das ich das noch weiter Entwickle da dieses Projekt ja nur entstanden ist um meine DLL zu testen. Diese wurde aber mittlerweise weiterentwickelt und ist nicht mehr kompatibel zu VPiano. Lasse den Quelltext aber stehn so wie er ist, ist vielleicht hilfreich für NonVCL Progger wenn man auch einiges besser machen könnte. gruss |
AW: Virtual Piano
Zitat:
Zitat:
Habe das Feature nun addiert bzw.. wer sich noch dafür interessiert kann es nachträglich einfügen.
Delphi-Quellcode:
//uMain..
//.. globale Variablen currentNote: Integer; note: Integer; KeyHandle: HWND;
Delphi-Quellcode:
gruss
{$REGION 'WM_MOUSEMOVE'}
WM_MOUSEMOVE: begin // Über Tastatur spielen ausgestellt? if not (CheckUseKey.GetCheckButtonStatus(CheckUseKey.Handle)) then begin // Kein Preset am spielen? if not PresetValue then begin case LoWord(wP) of // Noten bei gedrückter linker Maustaste spielen ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST: begin if not (GetSystemMetrics(SM_SWAPBUTTON) <> 0) then begin // nicht umgeschaltet dann Linke Maustaste if (GetAsyncKeyState(VK_LBUTTON) and 32768 <> 0) then begin GetCursorPos(p); KeyHandle := WindowFromPoint(p); note := MAKELONG(GetDlgCtrlID(KeyHandle), 0) - ID_KEY_ARRAY_FIRST; if (note >= 0) and (note < 128) and (note <> CurrentNote) then begin lastChordInDrag := integer(TChord(Chord)); StopNote(CurrentNote, lastChordInDrag); CurrentNote := note; StartNote(CurrentNote, lastChordInDrag); end; end; end; end; end; end; end; end; {$ENDREGION} {$REGION 'WM_LBUTTONDOWN'} WM_LBUTTONDOWN: begin if not (CheckUseKey.GetCheckButtonStatus(CheckUseKey.Handle)) then begin if not PresetValue then begin case LoWord(wP) of // Note mit der Maus spielen ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST: begin // Keyboard eingeschaltet? if OnState then begin lastChordInDrag := integer(TChord(Chord)); StartNote(((wp - ID_KEY_ARRAY_FIRST)), lastChordInDrag); currentNote := wp - ID_KEY_ARRAY_FIRST; end; end; end; end; end else SetFocus(WinHandle); // Instrumenten Bank Speichern/Weiterschalten case LoWord(wP) of ID_BANK_FIRST..ID_BANK_LAST: begin if GetKeyState(VK_SHIFT) and 32768 <> 0 then begin Banks[wP - (ID_BANK_FIRST - 1)].Value := InstIndex; tmpStr := Split(InstArrayList[InstIndex], ','); SKAERO_SetCTLText(SKAERO_GetMainItem(WinHandle, ID_INSTRUMENTLABEL), WideString(tmpStr[0])); SetController(32, 0, Channel); SetInstrument(Banks[wP - (ID_BANK_FIRST - 1)].Value, Channel); SKAERO_SetToolTipText(SKAERO_GetMainItem(WinHandle, wP), PWideChar(tmpStr[0])); end else begin if Banks[wP - (ID_BANK_FIRST - 1)].Value > -1 then begin tmpStr := Split(InstArrayList[Banks[wP - (ID_BANK_FIRST - 1)].Value], ','); SKAERO_SetCTLText(SKAERO_GetMainItem(WinHandle, ID_INSTRUMENTLABEL), WideString(tmpStr[0])); MidiTracker.CurrentInst[MidiTracker.CurrentTrack] := Banks[wP - (ID_BANK_FIRST - 1)].Value; Channel := MidiTracker.CurrentTrack; MidiTracker.ChangeInstrument(MidiTracker.CurrentInst[MidiTracker.CurrentTrack]); end; end; end; end; end; {$ENDREGION} {$REGION 'WM_LBUTTONUP'} WM_LBUTTONUP: begin if not (CheckUseKey.GetCheckButtonStatus(CheckUseKey.Handle) = True) then begin case LoWord(wP) of // zuletzt gespielte Note mit der Maus stoppen ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST: begin if OnState then begin lastChordInDrag := integer(TChord(Chord)); StopNote(CurrentNote, lastChordInDrag); SKAERO_SetZorder(SKAERO_GetMainItem(WinHandle, wP+1), HWND_TOP); end; end; end; end else begin Result := SendMessage(WinHandle, WM_COMMAND, wP, lP); exit; end; end; {$ENDREGION} |
AW: Virtual Piano
Noch ein kleines(Großes) Problem behoben.
Bedingt durch SetWindowRgn verändert sich die Zorder der Tasten. Das hat zur folge das beim klick auf die Halbtontasten die vorherige gedrückte Taste mit gespielt wird wenn sie davor gedrückt wurde. Vorher!
Delphi-Quellcode:
Und jetzt!
// Note mit der Maus spielen
ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST: begin // Keyboard eingeschaltet? if OnState then begin lastChordInDrag := integer(TChord(Chord)); StartNote(((wp - ID_KEY_ARRAY_FIRST)), lastChordInDrag); currentNote := wp - ID_KEY_ARRAY_FIRST; end; end;
Delphi-Quellcode:
Vorher habe ich WParam(wp) so übernommen wie es kommt.
ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST:
begin // Keyboard eingeschaltet? if OnState then begin GetCursorPos(p); KeyHandle := WindowFromPoint(p); Note := MAKELONG(GetDlgCtrlID(KeyHandle), 0) - ID_KEY_ARRAY_FIRST; CurrentNote := Note; StartNote(CurrentNote, lastChordInDrag); end; end; Da aber die ZOrder verändert wird und der Button im Bereich über der Halbtontaste Transparent ist kann ich mit dem aktuellen Window Handle nicht mehr arbeiten da es nicht mehr gültig ist. Also hole ich mir jetzt die Note über die ControlID der ich das jetzt neu ermittelte Handle übergebe. Jetzt klappt es trotz der Änderung der ZOrder. Ihr könnte das ja selbst einfügen in WM_LBUTTONDOWN: gruss |
AW: Virtual Piano
Mir wurde gerade beim Entpacken der ZIp-Archive von GData ein Virus angezeigt. In zwei ZIP-Dateien hat er angeschlagen. Das nur als kleine Info.
Code:
Virenwächter
Geprüft: 6496 (2 infiziert) Letzte Infektion: D:\Download\VirtualPiano\VPiano\Songs\Midi\freude.mid Infiziert mit: Exploit.CVE-2012-0003.Gen (Engine A) |
AW: Virtual Piano
Zitat:
Hab hier AVG der hat mir noch keinen Virus in meinen Archiven angezeigt geschweige denn in einer Midi Datei. Und so was ginge bei mir auch gar nicht raus. Und du bist der erste der mir bei fast 60 Downloads so etwas meldet. ZITAT: Antivirus Test 2014 Zitat:
Vom False Alarm mal ganz zu schweigen. gruss |
AW: Virtual Piano
Hmm. Also G-Data hat als bester Virenscanner abgeschnitten. :roll:
Und den benutze ich schon ewig. Ich weiß zwar, dass der manchmal etwas zu scharf ist und ich will dir auch nicht unterstellen, dass du hier etwas virenverseuchtes hochladen würdest. Ich wollte dir nur bescheid geben, dass diese Datei als eventueller Virus erkannt wird. Es gab hier im Forum ja auch schon diverse Themen in denen es gerade um solche Fehlmeldungen ging. Alle anderen Dateien wurden ohne meckern "durchgewunken". Aber ansonsten schönes Programm. Auch wenn ich nichts mit Klavier, und was auch immer man alles damit machen kann, am Hut habe. :-D |
AW: Virtual Piano
Zitat:
http://www.pc-magazin.de/vergleichst...h-1944271.html Na ja Stiftung Warentest.. sorry sagt schon alles. Zitat:
gruss |
AW: Virtual Piano
Zitat:
Aber das gelbe von Ei ist er auch nicht, denn auch er zeigt Fehlalarme, wie Du im Link unten nachlesen kannst: http://www.delphipraxis.net/184842-a...ml#post1299118 |
AW: Virtual Piano
Zitat:
NUR man muss es richtig stellen das es ein false Alarm ist. gruss |
AW: Virtual Piano
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz