回は「終了」ボタンだけという非常にシンプルなメニューでしたが、今回は、ポップアップを取り入れ、複数の項目を持つメニューを作成してみます。
前回同様、ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "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" の中に、
「日付と時刻の確認ができますよ~」
「詳しくは "メッセージ" メニューをクリック!」
なんていうスタティック テキストを表示しておくと良いかもしれません。
最終更新:2010年06月16日 17:07