| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Windows Mobile ダイアログベースのMFCアプリケーション作成」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
==Windows Mobile ダイアログベースのMFCアプリケーション作成==
+
==[[Windows Mobile ダイアログベースのMFCアプリケーション作成]]==
[[Windows Mobile][Visual Studio 2005]]
+
[[Windows Mobile]] | [[Visual Studio 2005]] |
 
===プロジェクトの作成===
 
===プロジェクトの作成===
====新規作成-プロジェクト から、MFCスマートデバイスアプリケーションを選ぶ====
+
====新規作成-プロジェクト から、[[MFC]]スマートデバイスアプリケーションを選ぶ====
 
[[File:1367_wmapp01.jpg]]
 
[[File:1367_wmapp01.jpg]]
====ウィザードで、Windows Mobile 6 Standard  SDKを選択====
+
====ウィザードで、[[Windows Mobile]] 6 Standard  SDKを選択====
 
[[File:1368_wmapp02.jpg]]
 
[[File:1368_wmapp02.jpg]]
 
====ダイアログベースで====
 
====ダイアログベースで====
14行目: 14行目:
 
====メニューの作成====
 
====メニューの作成====
 
=====新規にメニューを追加=====
 
=====新規にメニューを追加=====
もともと、存在している、IDR_MAINFRAME メニューはいくら修正しても、なにもおこらないので、新規にIDR_MENUを追加し、メニューを作成。ダイアログ cpp ファイルの、OnInitDialog 関数内の、dlgCommandBar.InsertMenuBarの引数を変更したら、メニューが表示されるようになった。
+
もともと、存在している、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, TRUE);        // 大きいアイコンの設定
+
     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.InsertMenuBar(IDR_MENU /* IDR_MAINFRAME */))
+
         !m_dlgCommandBar.Insert[[Menu]]Bar(IDR_MENU /* IDR_MAINFRAME */))
 
     {
 
     {
         TRACE0("CommandBar の作成に失敗しました\n");
+
         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 VK_RETURN:
+
             case VK_[[R]]ETU[[R]]N:
 
   
 
   
 
                 OnAnswer();    // Enterキー押下で、呼び出す処理。
 
                 OnAnswer();    // Enterキー押下で、呼び出す処理。
                 return TRUE;
+
                 return T[[R]]UE;
 
             default:
 
             default:
 
                 break;
 
                 break;

2020年2月16日 (日) 04:34時点における最新版

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

Windows Mobile | Visual Studio 2005 |

プロジェクトの作成

新規作成-プロジェクト から、MFCスマートデバイスアプリケーションを選ぶ

1367 wmapp01.jpg

ウィザードで、Windows Mobile 6 Standard SDKを選択

1368 wmapp02.jpg

ダイアログベースで

1369 wmapp03.jpg

タイトルを設定

1370 wmapp04.jpg

アプリの作成

メニューの作成

新規にメニューを追加

もともと、存在している、IDR_MAINFRAME メニューはいくら修正しても、なにもおこらないので、新規にIDR_MENUを追加し、メニューを作成。ダイアログ cpp ファイルの、OnInitDialog 関数内の、dlgCommandBar.InsertMenuBarの引数を変更したら、メニューが表示されるようになった。 1358 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;      // 作成できませんでした。
        :


実行させてみたところ

メニューでた。 1360 wmapp mnu03.jpg

メニューの実装

メニューにイベントハンドラを追加する。

コンテキストメニューから、以下を選択。 1361 wmapp proc01.jpg ハンドラを追加する対象を選択する(ダイアログに追加する) 1362 wmapp proc02.jpg 自動で関数が作成され、編集可能になるので、処理を追加する。

ダイアログのコントロールの実装

コントロールを貼り付けて、コンテキストメニューから、変数の追加を行う

1363 wmapp proc03.jpg

ダイアログのメンバー変数として、コントロールを管理できるようになる

1364 wmapp proc04.jpg

エンターキーの対応

ダイアログベースなので、Enterキーを押すと、画面が閉じてしまう。CDialog::PreTranslateMessage 関数をオーバーライドして、Enterキー押下時の処理をフックする。 ダイアログのプロパティから、オーバーライドアイコンを押下状態にし、PreTranslateMessageをオーバーライド 1365 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);
}
処理クラスを追加して起動

動いた。 1366 wmapp proc06.jpg