昨年末、窓の杜さん、Vectorさんからのお誘いで、「Windows Slate/Windows 7/マルチタッチ対応アプリケーション開発者会議」に参加しました。
そのこともあってか、現在、アタッシェケースをマルチタッチに対応させようと作業しています。
その会議では、Visual Studioでの開発前提のお話でしたが、開発環境は問わないということでしたので、それならばと、がんばってC++Builderで対応してみることにしました。
まずはサンプルアプリケーションを作って確認。
基本の基本、イベントを取得する部分から。
会議では開発者用にスレートPCを貸与していただいたので、簡単に動作確認できると高をくくってました。
ところが、、、
アプリの不可解な挙動に、どっぷりとハマることになります。
[cpp]
void __fastcall TForm1::FormGesture(TObject *Sender, const TGestureEventInfo &EventInfo,
bool &Handled)
{
switch(EventInfo.GestureID){
case igZoom:
ShowMessage("igZoom");
break;
case igPan:
ShowMessage("igPan");
break;
case igRotate:
ShowMessage("igRotate");
break;
case igTwoFingerTap:
ShowMessage("igTwoFingerTap");
break;
default:
ShowMessage("None");
break;
}
}
[/cpp]
こうやって定数を指定しても、うまくイベントが受け取れないようなのです。
ググったりしてみても解決策が見あたらず。
マルチタッチ対応アプリケーションを開発している人自体が少ないことを思い知らされました・・・
けっきょく試行錯誤した結果、単純に以下のようにしたら動作しました。
[cpp]
void __fastcall TForm1::FormGesture(TObject *Sender, const TGestureEventInfo &EventInfo,
bool &Handled)
{
switch(EventInfo.GestureID){
//igZoom
case 259:
ShowMessage("igZoom");
break;
//igPan
case 260:
ShowMessage("igPan");
break;
//igRotate
case 261:
ShowMessage("igRotate");
break;
//igTwoFingerTap
case 262:
ShowMessage("igTwoFingerTap");
break;
default:
ShowMessage("None");
break;
}
}
[/cpp]
なぜ??
定数は使えないのかい(笑)。リテラルにしたら、あっさり取れました。
謎すぎます、C++Builder2010。
誰かこの理由を知っておりましたら当方までご連絡を。
マルチタッチ対応への苦難はつづきます。
このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。
日々の開発作業で気づいたこと共有を。同じところで躓いている人が、 検索で辿り着けたら良いな、というスタンスで記事を書くので不定期更新になります。
コメントする