いつもお世話になっております。
またアドバイスを頂きたく失礼致します。
RegisterTouchWindow(GetMainWindowHandle() , TWF_WANTPALM)で
タッチウィンドウとしてメインウィンドウを登録した上で
SetHookWinProc( WndProc )を使ってWM_TOUCHメッセージを受けとり、下記の様な処理をして、
ウィンドウズのタブレットで画面上の十字キーとボタンで操作出来るゲームを作っています
LRESULT CALLBACK WndProc( HWND WindowHandle, UINT Message, WPARAM wParam, LPARAM lParam )
{
switch( Message )
{
case WM_TOUCH:
{
unsigned int numInputs = (unsigned int) wParam;
TOUCHINPUT* TNB = new TOUCHINPUT[numInputs];
if(GetTouchInpuTNBnfo((HTOUCHINPUT)lParam, numInputs, TNB, sizeof(TOUCHINPUT)))
{
for(unsigned int i=0; i< numInputs; ++i)
{
if(TNB[i].dwFlags & TOUCHEVENTF_DOWN)
{
処理用関数( TNB[i].dwID , TNB[i].x ,TNB[i].y , 1);
}
else if((TNB[i].dwFlags & TOUCHEVENTF_MOVE))
{
処理用関数( TNB[i].dwID , TNB[i].x ,TNB[i].y , 2);
}
else if(TNB[i].dwFlags & TOUCHEVENTF_UP)
{
処理用関数( TNB[i].dwID , TNB[i].x ,TNB[i].y , 0);
}
}
}
CloseTouchInputHandle((HTOUCHINPUT)lParam);
delete [] TNB;
}
break;
default:
return CallWindowProc((WNDPROC)dxWndProc, WindowHandle, Message, wParam, lParam);
}
return CallWindowProc((WNDPROC)dxWndProc, WindowHandle, Message, wParam, lParam);
}
しばらくはタッチ操作も快調で問題なく動くのですが、十分ほど遊ぶと
タッチすると画面がカクつくようになります。
画面に一つ目の指を置いて、2つ目の指を動かした時に
一つ目の指の下にプレスアンドホールドの時に表示される白い四角が
激しく点滅するので、恐らくはウィンドウズ側のWM_TOUCHの情報やその処理が重すぎて、
処理が蓄積していってしまうように感じます。
WM_TOUCHだけ受け取る回数を減らすなど出来ないかと方法を探しても見つからず、、
その上、知識(知能?)が足りないため、それもまったく見当外れのなのかもしれません^^;
ウィンドウをもう一つ作る方法なども試しましたが、そのウィンドウもメインウィンドウと同時に
更新されてしまうようで、そのウィンドウだけ回数を減らしてPeekMessageするなども出来ませんでした。
(※それも知識不足が原因かもしれません)
是非ウィンドウズタブレットでの操作が可能なソフトを作りたいのですが
よろしければアドバイスをいただけますでしょうか。
もしくはウィンドウズのタッチ操作に正式対応していただけると
大変嬉しいのですが・・・勝手な願望です^^;
よろしくお願いいたしますm(__)m