「Windows Mobile ダイアログベースのMFCアプリケーション作成」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
− | ==Windows Mobile ダイアログベースのMFCアプリケーション作成== | + | ==[[Windows Mobile ダイアログベースのMFCアプリケーション作成]]== |
[[Windows Mobile]] | [[Visual Studio 2005]] | | [[Windows Mobile]] | [[Visual Studio 2005]] | | ||
===プロジェクトの作成=== | ===プロジェクトの作成=== | ||
− | ====新規作成-プロジェクト | + | ====新規作成-プロジェクト から、[[MFC]]スマートデバイスアプリケーションを選ぶ==== |
[[File:1367_wmapp01.jpg]] | [[File:1367_wmapp01.jpg]] | ||
− | ==== | + | ====ウィザードで、[[Windows Mobile]] 6 Standard SDKを選択==== |
[[File:1368_wmapp02.jpg]] | [[File:1368_wmapp02.jpg]] | ||
====ダイアログベースで==== | ====ダイアログベースで==== | ||
14行目: | 14行目: | ||
====メニューの作成==== | ====メニューの作成==== | ||
=====新規にメニューを追加===== | =====新規にメニューを追加===== | ||
− | もともと、存在している、IDR_MAINFRAME メニューはいくら修正しても、なにもおこらないので、新規にIDR_MENUを追加し、メニューを作成。ダイアログ cpp ファイルの、OnInitDialog 関数内の、dlgCommandBar. | + | もともと、存在している、IDR_MAINFRAME メニューはいくら修正しても、なにもおこらないので、新規にIDR_MENUを追加し、メニューを作成。ダイアログ cpp ファイルの、OnInitDialog 関数内の、dlgCommandBar.Insert[[Menu]]Barの引数を変更したら、メニューが表示されるようになった。 |
[[File:1358_wmapp_mnu01.jpg]] | [[File:1358_wmapp_mnu01.jpg]] | ||
BOOL CindcalcDlg::OnInitDialog() | BOOL CindcalcDlg::OnInitDialog() | ||
22行目: | 22行目: | ||
// このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、 | // このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、 | ||
// Framework は、この設定を自動的に行います。 | // Framework は、この設定を自動的に行います。 | ||
− | SetIcon(m_hIcon, | + | SetIcon(m_hIcon, T[[R]]UE); // 大きいアイコンの設定 |
SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定 | SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定 | ||
if (!m_dlgCommandBar.Create(this) || | if (!m_dlgCommandBar.Create(this) || | ||
− | !m_dlgCommandBar. | + | !m_dlgCommandBar.Insert[[Menu]]Bar(IDR_MENU /* IDR_MAINFRAME */)) |
{ | { | ||
− | + | T[[R]]ACE0("CommandBar の作成に失敗しました\n"); | |
return FALSE; // 作成できませんでした。 | return FALSE; // 作成できませんでした。 | ||
: | : | ||
59行目: | 59行目: | ||
if(pMsg->message == WM_KEYDOWN) { | if(pMsg->message == WM_KEYDOWN) { | ||
switch(pMsg->wParam) { | switch(pMsg->wParam) { | ||
− | case | + | case VK_[[R]]ETU[[R]]N: |
OnAnswer(); // Enterキー押下で、呼び出す処理。 | OnAnswer(); // Enterキー押下で、呼び出す処理。 | ||
− | return | + | return T[[R]]UE; |
default: | default: | ||
break; | break; |
2020年2月16日 (日) 04:34時点における最新版
Windows Mobile ダイアログベースのMFCアプリケーション作成
Windows Mobile | Visual Studio 2005 |
プロジェクトの作成
新規作成-プロジェクト から、MFCスマートデバイスアプリケーションを選ぶ
ウィザードで、Windows Mobile 6 Standard SDKを選択
ダイアログベースで
タイトルを設定
アプリの作成
メニューの作成
新規にメニューを追加
もともと、存在している、IDR_MAINFRAME メニューはいくら修正しても、なにもおこらないので、新規にIDR_MENUを追加し、メニューを作成。ダイアログ cpp ファイルの、OnInitDialog 関数内の、dlgCommandBar.InsertMenuBarの引数を変更したら、メニューが表示されるようになった。
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; // 作成できませんでした。 :
実行させてみたところ
メニューの実装
メニューにイベントハンドラを追加する。
コンテキストメニューから、以下を選択。 ハンドラを追加する対象を選択する(ダイアログに追加する) 自動で関数が作成され、編集可能になるので、処理を追加する。
ダイアログのコントロールの実装
コントロールを貼り付けて、コンテキストメニューから、変数の追加を行う
ダイアログのメンバー変数として、コントロールを管理できるようになる
エンターキーの対応
ダイアログベースなので、Enterキーを押すと、画面が閉じてしまう。CDialog::PreTranslateMessage 関数をオーバーライドして、Enterキー押下時の処理をフックする。 ダイアログのプロパティから、オーバーライドアイコンを押下状態にし、PreTranslateMessageをオーバーライド
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); }
処理クラスを追加して起動
© 2006 矢木浩人