回は「終了」ボタンだけという非常にシンプルなメニューでしたが、今回は、ポップアップを取り入れ、複数の項目を持つメニューを作成してみます。


前回同様、ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "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" の中に、
「日付と時刻の確認ができますよ~」
「詳しくは "メッセージ" メニューをクリック!」
なんていうスタティック テキストを表示しておくと良いかもしれません。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年06月16日 17:07