![]() |
AW: WM_TOUCH und GetTouchInputInfo
Zitat:
|
AW: WM_TOUCH und GetTouchInputInfo
Das ist schwierig. Auf meinem Rechner habe ich kein TouchDisplay und auf der Siemens Kiste mit Multitouch ist kein Delphi installiert ...
Wie könnte ich das noch nachschauen ? |
AW: WM_TOUCH und GetTouchInputInfo
|
AW: WM_TOUCH und GetTouchInputInfo
Ich hoffe das ist das was du meintest.
Bekomme beim touchen dann genau das hier raus: (0021DB2D){MultiTouch.exe} [0061EB2D] Unknown function at TMethodImplementationIntercept + $1583FD (0021BD1F){MultiTouch.exe} [0061CD1F] Unknown function at TMethodImplementationIntercept + $1565EF (0021DB38){MultiTouch.exe} [0061EB38] Unknown function at TMethodImplementationIntercept + $158408 //hier wird gettouchinputinfo() ausgeführt (0021DB2D){MultiTouch.exe} [0061EB2D] Unknown function at TMethodImplementationIntercept + $1583FD (0021BD1F){MultiTouch.exe} [0061CD1F] Unknown function at TMethodImplementationIntercept + $1565EF (0021DB38){MultiTouch.exe} [0061EB38] Unknown function at TMethodImplementationIntercept + $158408 Der Vorgang wurde erfolgreich beendet
Code:
procedure TForm1.AppMessage(var Msg: tagMSG; var Handled: Boolean);
var le: DWORD; i: integer; lp: HTOUCHINPUT; begin if Msg.message = WM_TOUCH then begin Handled := false; lp := Msg.lParam; SetLength(touchinput, Msg.wParam); Memo1.Clear; SetLastError(0); Memo1.Lines.Add(GetCurrentStack); succes := GetTouchInputInfo(lp, UINT(Msg.wParam), @touchinput[0], SizeOf(TTouchinput)); Memo1.Lines.Add(GetCurrentStack); if succes then begin Memo1.Lines.Add('suceeded: ' + BoolToStr(succes)); Memo1.Lines.Add('msg.wparam: ' + IntToStr(Msg.wParam)); Memo1.Lines.Add('msg.lparam: ' + IntToStr(Msg.lParam)); Memo1.Lines.Add('msg.lparam: ' + IntToStr(lp)); Memo1.Lines.Add('msg.hwnd: ' + IntToStr(Msg.hwnd)); for i := 0 to Msg.wParam - 1 do begin Memo1.Lines.Add(IntToStr(touchinput[i].cxContact)); Memo1.Lines.Add(IntToStr(touchinput[i].cyContact)); end; Handled := true; end else begin Memo1.Lines.Add(SysErrorMessage(GetLastError)); end; if Handled then begin CloseTouchInputHandle(lp); end; end; end; |
AW: WM_TOUCH und GetTouchInputInfo
Ich hoffes das ist das was du meintest :gruebel:
Code:
(0021DB2D){MultiTouch.exe} [0061EB2D] Unknown function at TMethodImplementationIntercept + $1583FD
(0021BD1F){MultiTouch.exe} [0061CD1F] Unknown function at TMethodImplementationIntercept + $1565EF (0021DB38){MultiTouch.exe} [0061EB38] Unknown function at TMethodImplementationIntercept + $158408 //hier wird gettouchinputinfo ausgeführt (0021DB2D){MultiTouch.exe} [0061EB2D] Unknown function at TMethodImplementationIntercept + $1583FD (0021BD1F){MultiTouch.exe} [0061CD1F] Unknown function at TMethodImplementationIntercept + $1565EF (0021DB38){MultiTouch.exe} [0061EB38] Unknown function at TMethodImplementationIntercept + $158408 Der Vorgang wurde erfolgreich beendet
Code:
procedure TForm1.AppMessage(var Msg: tagMSG; var Handled: Boolean);
var le: DWORD; i: integer; lp: HTOUCHINPUT; begin if Msg.message = WM_TOUCH then begin Handled := false; lp := Msg.lParam; SetLength(touchinput, Msg.wParam); Memo1.Clear; SetLastError(0); Memo1.Lines.Add(GetCurrentStack); succes := GetTouchInputInfo(lp, UINT(Msg.wParam), @touchinput[0], SizeOf(TTouchinput)); Memo1.Lines.Add(GetCurrentStack); if succes then begin Memo1.Lines.Add('suceeded: ' + BoolToStr(succes)); Memo1.Lines.Add('msg.wparam: ' + IntToStr(Msg.wParam)); Memo1.Lines.Add('msg.lparam: ' + IntToStr(Msg.lParam)); Memo1.Lines.Add('msg.lparam: ' + IntToStr(lp)); Memo1.Lines.Add('msg.hwnd: ' + IntToStr(Msg.hwnd)); for i := 0 to Msg.wParam - 1 do begin Memo1.Lines.Add(IntToStr(touchinput[i].cxContact)); Memo1.Lines.Add(IntToStr(touchinput[i].cyContact)); end; Handled := true; end else begin Memo1.Lines.Add(SysErrorMessage(GetLastError) ); end; if Handled then begin CloseTouchInputHandle(lp); end; end; end; |
AW: WM_TOUCH und GetTouchInputInfo
Das ist ein bisschen nichtssagend. Hast du einen Debug-Build oder ein Release-Build rüberkopiert?
|
AW: WM_TOUCH und GetTouchInputInfo
Ich habe die Lösung zu meinem Problem gestern nachmittag noch herausgefunden und auch gepostet.
Aber aus irgendeinem Grund ist der bis jetzt noch nicht erschienen.. Und ich möchte es nicht nochmal posten. Sonst passiert das selbe wie gestern - dass ich zwei mal das selbe schreibe. Wie wird denn sowas gehandhabt ? Ich habe auch schon versucht den gestrigen doppelt geposteten Beitrag zu löschen - ohne Erflog :? Gruß Hofes |
AW: WM_TOUCH und GetTouchInputInfo
Zitat:
Oder man meldet den Beitrag siehe der Button unter deinen Beitrag "Report!". Selber löschen kannst du nichts lediglich deinen Beitrag editieren bzw.. den Inhalt davon innerhalb 24Stunden löschen solange der "Bearbeiten" Button sichtbar ist. Du kannst auch über den Report Button eine Anfrage stellen warum dein Beitrag nicht erschienen ist. Mitunter wird hier Spam aussortiert nach welchen Kriterien hier vorgegangen wird.. keine Ahnung bin kein Mod\Admin. gruss |
AW: WM_TOUCH und GetTouchInputInfo
Liste der Anhänge anzeigen (Anzahl: 1)
Interssant :) da sagt mir das Hint aber was anderes :-D
Dann werd ich die Lösung von gestern nochmal posten müssen.. @TiGü Ja stimmt, das war in Release compiliert, mit Debug kommt auch nicht so viel mehr raus... Es ist so das GetTouchInputInfo mag aus irgendeinem Grund den Message Typ "tagMSG" nicht (kommt vom TApplicationEvents bzw Application.OnMessage). Wenn ich nun eine Prozedur direkt mit dem WM_TOUCH verknüpfe bekomm ich den Message Typ "TMessage". Diesen frisst die GetTouchInputInfo Funktion...
Code:
Das ist im Prinzip genau dasselbe wie "ich2" vor 9 Jahren.
procedure wmTouch(var msg : TMessage); message WM_TOUCH;
//.. //.. procedure TfrmMain.wmTouch(var Msg: TMessage); function tptp(const TouchPoint: TTouchInput): TPoint; begin Result := Point(TouchPoint.X div 100, TouchPoint.Y div 100); PhysicalToLogicalPoint(self.Handle, Result); end; var TouchInputs: array of TTouchInput; counter: Integer; Handled: Boolean; P: TPoint; begin Handled := False; SetLength(TouchInputs, Msg.WParam); GetTouchInputInfo(Msg.LParam, Msg.WParam, @TouchInputs[0], SizeOf(TTouchInput)); try frmMainDisp.Memo1.clear; for counter := 0 to Length(TouchInputs)-1 do begin P := tptp(Touchinputs[counter]); frmMainDisp.Memo1.Lines.Add('X'+ IntToStr(counter) + ': ' +IntToStr(p.x)); frmMainDisp.Memo1.Lines.Add('Y'+ IntToStr(counter) + ': ' +IntToStr(p.y)); end; Handled := True; finally if Handled then CloseTouchInputHandle(Msg.LParam) else inherited; end; end; Nur das ich die falschen Messages erhalten habe.. Gruß Hofes |
AW: WM_TOUCH und GetTouchInputInfo
Delphi-Quellcode:
procedure TForm1.AppMessage(var Msg: tagMSG; var Handled: Boolean);
Nun ja! Habe noch nirgends gesehen das man die Windows Messagen auf diese Art überschreibt. Destotrotz war wohl blind das ich das nicht gesehen habe. Viel Erfolg weiterhin. Zitat:
Sollte man vielleicht mal ändern. ;) Ich meine den Hint! gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr. |
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