Hallo,
hat jemand von euch Erfahrungen mit Standard-Touchscreens und GLBasic?
Ich will mit einem Touchscreen, der ja normalerweise nur die Maus emuliert, mein Programm steuern. Als Test hab ich erst mal nur ein Miniprogramm geschrieben, dass mir an die Stelle des versteckten Mauszeigers ein Quadrat malt.
Wenn ich wirklich mit der Maus arbeite, klappt alles auch wunderbar. Das Quadrat ist genau da, wo ich auch die Maus hinbewege. Wenn ich aber den Touchscreen benutze, springt der Mauscursor willkürlich an völlig andere Positionen als die, die ich wirklich berührt habe. Ich kann da keinerlei Systematik hinter erkennen außer der, das es praktisch immer die falschen Stellen sind.
Das Ganze nur im GLBasic-Programm, mit allen anderen Standard-Windows-Programmen klappt der Screen einwandfrei.
Irgend eine Idee, was da hängen könnte?
Ich nutze DirectInput für die Mausabfrage. Probier mal, ob ein "SYSTEMPOINTER TRUE" reicht. Wenn nicht, dann nimm das hier:
SYSTEMPOINTER TRUE
WHILE TRUE
LOCAL x,y
GetTouchscreenPos(x,y)
DRAWRECT x-8,y-8,16,16, 0xffffff
SHOWSCREEN
WEND
FUNCTION foo:
ENDFUNCTION
INLINE
}
extern "C"
{
struct POINT {int x, y;};
int __stdcall GetCursorPos(POINT*);
int __stdcall ScreenToClient(void*, POINT*);
}
namespace __GLBASIC__ {
ENDINLINE
FUNCTION GetTouchscreenPos: BYREF x, BYREF y
INLINE
POINT pt;
GetCursorPos(&pt);
ScreenToClient(GLBASIC_HWND(), &pt);
x = pt.x;
y = pt.y;
ENDINLINE
ENDFUNCTION
Danke, das wars! Ein simples Einschalten des Mauszeigers reichte tatsächlich schon aus... Nur mal so interessehalber: Irgend eine Vorstellung, wieso der unsichtbare Mauszeiger nicht funktionierte?
Wie gesagt, da verwende ich dann DirectX, weil's schneller/genauer ist.