Touchscreen-Probleme

Previous topic - Next topic

amarliani

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?

Kitty Hello

Ich nutze DirectInput für die Mausabfrage. Probier mal, ob ein "SYSTEMPOINTER TRUE" reicht. Wenn nicht, dann nimm das hier:


Code (glbasic) Select

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

amarliani

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?

Kitty Hello

Wie gesagt, da verwende ich dann DirectX, weil's schneller/genauer ist.