トップ 一覧 ping 検索 ヘルプ RSS ログイン

Windows Mobile ダイアログベースのMFCアプリケーション作成の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!Windows Mobile ダイアログベースのMFCアプリケーション作成
[Windows Mobile][Visual Studio 2005]
!!プロジェクトの作成
!新規作成−プロジェクト から、MFCスマートデバイスアプリケーションを選ぶ
{{ref_image wmapp01.jpg}}
!ウィザードで、Windows Mobile 6 Standard  SDKを選択
{{ref_image wmapp02.jpg}}
!ダイアログベースで
{{ref_image wmapp03.jpg}}
!タイトルを設定
{{ref_image wmapp04.jpg}}

!!アプリの作成
!メニューの作成
::新規にメニューを追加
もともと、存在している、IDR_MAINFRAME メニューはいくら修正しても、なにもおこらないので、新規にIDR_MENUを追加し、メニューを作成。ダイアログ cpp ファイルの、OnInitDialog 関数内の、dlgCommandBar.InsertMenuBarの引数を変更したら、メニューが表示されるようになった。
{{ref_image wmapp_mnu01.jpg}}
 BOOL CindcalcDlg::OnInitDialog()
 {
     CDialog::OnInitDialog();
 
     // このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、
     //  Framework は、この設定を自動的に行います。
     SetIcon(m_hIcon, TRUE);         // 大きいアイコンの設定
     SetIcon(m_hIcon, FALSE);        // 小さいアイコンの設定
 
     if (!m_dlgCommandBar.Create(this) ||
         !m_dlgCommandBar.InsertMenuBar(IDR_MENU /* IDR_MAINFRAME */))
     {
         TRACE0("CommandBar の作成に失敗しました\n");
         return FALSE;      // 作成できませんでした。
         :


::実行させてみたところ
メニューでた。
{{ref_image wmapp_mnu03.jpg}}

!メニューの実装
::メニューにイベントハンドラを追加する。
コンテキストメニューから、以下を選択。
{{ref_image wmapp_proc01.jpg}}
ハンドラを追加する対象を選択する(ダイアログに追加する)
{{ref_image wmapp_proc02.jpg}}
自動で関数が作成され、編集可能になるので、処理を追加する。
!ダイアログのコントロールの実装
::コントロールを貼り付けて、コンテキストメニューから、変数の追加を行う
{{ref_image wmapp_proc03.jpg}}
::ダイアログのメンバー変数として、コントロールを管理できるようになる
{{ref_image wmapp_proc04.jpg}}
!エンターキーの対応
ダイアログベースなので、Enterキーを押すと、画面が閉じてしまうので、CDialog::PreTranslateMessage 関数をオーバーライドして、Enterキー押下時の処理を実装する。
ダイアログベースなので、Enterキーを押すと、画面が閉じてしまう。CDialog::PreTranslateMessage 関数をオーバーライドして、Enterキー押下時の処理をフックする。
ダイアログのプロパティから、オーバーライドアイコンを押下状態にし、PreTranslateMessageをオーバーライド
{{ref_image wmapp_proc05.jpg}}
 BOOL CindcalcDlg::PreTranslateMessage(MSG* pMsg)
 {
     // TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。
 
     if(pMsg->message == WM_KEYDOWN) {
         switch(pMsg->wParam) {
             case VK_RETURN:
 
                 OnAnswer();    // Enterキー押下で、呼び出す処理。
                 return TRUE;
             default:
                 break;
         }
     }
 
     return CDialog::PreTranslateMessage(pMsg);
 }
::[処理クラスを追加|http://typea.info/blg/glob/2009/03/windows_mobile.html]して起動
動いた。
{{ref_image wmapp_proc06.jpg}}