トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

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



目次



記事一覧

キーワード

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);
}
処理クラスを追加して起動

動いた。



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.