!!!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キー押下時の処理をフックする。 ダイアログのプロパティから、オーバーライドアイコンを押下状態にし、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}}