大抵のアプリケーションなら備えているメニューコントロールはRADツールからも作成することができます。Windowsアプリケーションには欠かせないメニューコントロールは是非とも自由に操作できるようにしておきたいものです。


本題に入る前に、下地となるノーマル ウィンドウ ベースのプロジェクトを生成しておいて下さい(プロジェクト名を "MenuTest" とします)。

今回は、メニューコントロールを使って「終了」ボタンを作ってみます。項目が1つだけという非常に簡単なメニューです。
では、作成したプロジェクトが開かれた状態になったところで、早速メニューの作成をしていきましょう。プロジェクト ビューのMaterialタブを開くと、「メニュー」フォルダがありますね?(プロジェクトビューが表示されていない場合は、メニューの「表示」→「プロジェクト ビュー」にチェックが入っているか確認を)

新たにメニュー コントロールを作成したいときは、この「メニュー」フォルダを右クリックし、「メニューを挿入」をクリックします。

メニューIDを、"MainMenu" などとし、OKボタンをクリックします。


新たにメニューが作成されると、メニューエディタが起動します(後にメニュー エディタを開きたいときは、プロジェクト ビュー内のメニューIDをダブルクリックして下さい)。まずは挿入ボタンをクリックしてメニュー項目を1つ作ってみましょう。


"caption text" とだけ書かれた項目が挿入されるので、それを選択します。すると、IDが "IDM_name"、キャプションが "caption text" になっていることがわかります。「変更」ボタンをクリックし、IDを "IDM_EXIT" に、キャプションを "終了" に変更しておきましょう。


メニューの作成はこれで終わりです。では、これをウィンドウに貼り付けてみます。プロジェクトビューから、"MainWnd" を開いて下さい。ウィンドウ プロパティに「メニュー」という項目があり、任意のメニュー コントロールを指定することができるようになっています。初期状態では "なし" になっているので、ここを先ほど作成した "MainMenu" に変更します。

次に、メニューの「終了」ボタンが押された時のイベント処理を記述します。ウィンドウ内の適当な部分を右クリックし、「メニューによるイベント」をクリックします。


ここで表示されたプロシージャがメニューの「終了」をクリックしたときに実行されるイベント プログラムになります。このプロシージャには、下のようなコードを記述してみましょう。

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


「はい」「いいえ」ボタンを持つメッセージボックスをMessageBox関数で作成し、変数RetMsgに押されたボタンの識別IDが格納されます。RetMsgの内容がIDYESのとき(「はい」が押されたとき)だけ、DestroyWindow関数を実行し、ウィンドウhMainWndを破棄するような動きになっています。

これでメニューに関する3つの工程

  • メニューの作成
  • ウィンドウへのメニュー貼り付け
  • メニューイベントのコーディング

が完了しました。コンパイル、実行をして、「終了」ボタンがちゃんと動作するこどうか、試してみましょう。