▼Windows Mobileプログラミングメモ▼
タッチイベントの処理

タッチした位置の表示を行うプログラムを作成する。


ダイアログの準備
  1. ソリューションエクスプローラのリソースファイルを右クリックし、ポップアップ「追加→リソース」を選択。
  2. Dialogをダブルクリックし、ダイアログ(IDD_DIALOG1)を生成。
  3. OKボタン(IDOK)とキャンセルボタン(IDCANCEL)を削除。
  4. ツールボックスの「Static Text」をダイアログに配置。
  5. Static TextのIDを"IDC_STATIC1"、Captionを"TouchEx>"に変更。
ソースコードの作成
  1. ソースコードを以下のように編集。
    main.cpp
    #include <windows.h>
    #include <windowsx.h>
    #include "resource.h"
    #include <aygshell.h> 
    #pragma comment(lib,"aygshell.lib")
    
    //関数の宣言
    BOOL DlgProc(HWND,UINT,WPARAM,LPARAM);
    void Paint();
    
    //変数の宣言
    HWND hDlg=NULL;
    int  mouseX=0;
    int  mouseY=0;
    BOOL mouseFlag=FALSE;
    
    //メイン
    int WinMain(HINSTANCE hDlgance,HINSTANCE hPrevInstance,
        LPWSTR lpCmdLine,int nShowCmd) {
        //ダイアログの生成
        DialogBoxW(hDlgance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc);
        return 0;
    }
    
    //ダイアログのイベント処理
    BOOL DlgProc(HWND hDialog,UINT uMsg,WPARAM wp,LPARAM lp) {
        switch(uMsg) {
        //初期化
        case WM_INITDIALOG:
            {
            //ダイアログの設定
            SHINITDLGINFO sidi={
                SHIDIM_FLAGS,hDialog,
                SHIDIF_DONEBUTTON|SHIDIF_SIZEDLGFULLSCREEN|SHIDIF_EMPTYMENU};
            SHInitDialog(&sidi);
    
            //インスタンス保持
            hDlg=hDialog;
            }
            break;
        //マウスダウン
        case WM_LBUTTONDOWN:
            mouseFlag=TRUE;
            Paint();
            break;
        //マウスアップ
        case WM_LBUTTONUP:
            mouseFlag=FALSE;
            Paint();
            break;
        //マウスムーブ
        case WM_MOUSEMOVE:
            mouseX=LOWORD(lp);
            mouseY=HIWORD(lp);
            Paint();
            break;
        //コマンド
        case WM_COMMAND:
            switch(LOWORD(wp)) {
            //OKボタン
            case IDOK:
                EndDialog(hDialog,LOWORD(wp));
                break;
            }
            break;
        //クローズ
        case WM_CLOSE:
            DestroyWindow(hDialog);
            break;
        }
        return FALSE;
    }
    
    //描画
    void Paint() {
        TCHAR wstr[1024]={0};
        StringCchPrintf(wstr,100,_T("TouchEx>%d,%d\n"),mouseX,mouseY);
        if (mouseFlag) StringCchCat(wstr,1024,_T("タッチダウン"));
        Static_SetText(GetDlgItem(hDlg,IDC_STATIC1),wstr);
    }
    



−戻る−