- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!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}}