「ステップ7 「メニュー コントロールを使う②」」の編集履歴(バックアップ)一覧はこちら

ステップ7 「メニュー コントロールを使う②」」(2010/06/16 (水) 17:07:59) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

公式の解説でOK
回は「終了」ボタンだけという非常にシンプルなメニューでしたが、今回は、ポップアップを取り入れ、複数の項目を持つメニューを作成してみます。 前回同様、ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "MenuTest2" とします)を作成し、メニューの作成(IDは "MainMenu")、メインウィンドウへのメニューの貼り付けを行ってみて下さい。やり方をもう一度確認したいよ、という方は、前回「ステップ6」のページをご確認下さい。 それでは、"MainMenu" を開き、メニュー項目を追加していきましょう。まずは「挿入」ボタンをクリックし、1つ目の項目を挿入します。以後、メニューを挿入するときは、挿入したい場所の1つ上の項目を選択した状態で「挿入」ボタンをクリックするようにすることを覚えておくと便利です。 今挿入した1つ目のメニューは、キャプションを "メッセージ(&M)" とし、「ポップアップ」にチェックを入れておきます。 "メッセージ" という項目を選択した状態で、「挿入」ボタンをクリックします。ここで、「挿入位置は "メッセージ" ポップアップの中ですか?それとも、外ですか?」という質問メッセージが表示されるので、「はい」をクリックし、ポップアップ内に挿入する意思を伝えます。 "メッセージ" 項目内に新たなメニュー項目が挿入されたのが確認できるので、その新たに挿入された項目を選択し、IDを "IDM_SHOWDATE"に、キャプションを "今日の日付は?" に変更します。 更に、"今日の日付は?" という項目を選択した状態で「挿入」ボタンをクリックし、IDを "IDM_SHOWTIME" に、キャプションを "今何時?" に変更します。 続けて、"今何時?" を選択した状態で「挿入」ボタンをクリックし、新たに追加されたメニューを選択し、セパレータにチェックを入れます。 そのセパレータを選択した状態で、「挿入」ボタンをクリックし、IDを "IDM_EXIT" に、キャプションを "終了(&X)" に変更します。 先ほど挿入した "メッセージ" を選択し、「挿入」ボタンをクリックし、今度は表示されたメッセージにたいして「いいえ」をクリックします。キャプションを "ヘルプ(&H)" などとし、ポップアップにチェックを入れます。 "ヘルプ(&H)" を選択した状態で「挿入」ボタンをクリック、メッセージでは「はい」をクリックしてIDを "IDM_ABOUT" に、キャプションを "バージョン情報(&A)" に変更します。 この操作を文章で書いていくと長々となってしまいますが、やることは連続的な操作だけなので、一度コツをつかんでしまえばラクチンですね。下のようなメニュー構成になっていれば完了です。最後に、それぞれの項目のIDが任意のものになっているか、確かめておくとよいでしょう。 "MainWnd" を開き、ウィンドウ プロパティ内のメニューが "MainMenu" になっていることを確認し、メニュー イベントのコーディングをしていきます。 今回コーディングするメニューイベントは、「今日の日付は?」「今何時?」「終了」「バージョン情報」の4点ですので、「イベント処理」ダイアログのメニュー欄には、これら4つが表示されているはずです。 もし、下の図と表示が異なっているときは、焦らず、"MainMenu" の構成、ID指定がちゃんと行われているかどうかを、再度確認してみて下さい。 すでに気づいた方がいるかもしれませんが、今回のコーディング内容は、ステップ5を引用したものです。 「イベント処理」ダイアログから、順番にプロシージャを記述していきます。 「今日の日付は?」イベント Sub MainWnd_IDM_SHOWDATE_MenuClick() Dim buffer As String buffer=String$(255,Chr$(0)) GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, ByVal 0, 0, buffer, 255) MessageBox(hMainWnd,buffer,"今日の日付",MB_OK) End Sub 「今何時?」イベント Sub MainWnd_IDM_SHOWTIME_MenuClick() Dim buffer As String buffer=String$(255,Chr$(0)) GetTimeFormat(LOCALE_USER_DEFAULT, LOCALE_NOUSEROVERRIDE, ByVal 0, 0, buffer, 255) MessageBox(hMainWnd,buffer,"現在時刻",MB_OK) End Sub 「終了」イベント Sub MainWnd_IDM_EXIT_MenuClick() Dim RetMsg As Long RetMsg=MessageBox(hMainWnd, "ホントに終了しますか?", "MenuTest", MB_YESNO) If RetMsg=IDYES Then DestroyWindow(hMainWnd) End If End Sub 「バージョン情報」イベント Sub MainWnd_IDM_ABOUT_MenuClick() MessageBox(hMainWnd,"日付、時刻チェックプログラム Ver1.00","MenuTest",MB_OK) End Sub これですべての作業が完了です。コンパイル、実行してみましょう。っと、その前に、"MainWnd" の中に、 「日付と時刻の確認ができますよ~」 「詳しくは "メッセージ" メニューをクリック!」 なんていうスタティック テキストを表示しておくと良いかもしれません。

表示オプション

横に並べて表示:
変化行の前後のみ表示: