「ステップ6 「メニュー コントロールを使う①」」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
公式の解説でOK
大抵のアプリケーションなら備えているメニューコントロールはRADツールからも作成することができます。Windowsアプリケーションには欠かせないメニューコントロールは是非とも自由に操作できるようにしておきたいものです。
本題に入る前に、下地となるノーマル ウィンドウ ベースのプロジェクトを生成しておいて下さい(プロジェクト名を "MenuTest" とします)。
今回は、メニューコントロールを使って「終了」ボタンを作ってみます。項目が1つだけという非常に簡単なメニューです。
では、作成したプロジェクトが開かれた状態になったところで、早速メニューの作成をしていきましょう。プロジェクト ビューのMaterialタブを開くと、「メニュー」フォルダがありますね?(プロジェクトビューが表示されていない場合は、メニューの「表示」→「プロジェクト ビュー」にチェックが入っているか確認を)
新たにメニュー コントロールを作成したいときは、この「メニュー」フォルダを右クリックし、「メニューを挿入」をクリックします。
メニューIDを、"MainMenu" などとし、OKボタンをクリックします。
#image(p6-1.png)
新たにメニューが作成されると、メニューエディタが起動します(後にメニュー エディタを開きたいときは、プロジェクト ビュー内のメニューIDをダブルクリックして下さい)。まずは挿入ボタンをクリックしてメニュー項目を1つ作ってみましょう。
"caption text" とだけ書かれた項目が挿入されるので、それを選択します。すると、IDが "IDM_name"、キャプションが "caption text" になっていることがわかります。「変更」ボタンをクリックし、IDを "IDM_EXIT" に、キャプションを "終了" に変更しておきましょう。
#image(p6-2.png)
メニューの作成はこれで終わりです。では、これをウィンドウに貼り付けてみます。プロジェクトビューから、"MainWnd" を開いて下さい。ウィンドウ プロパティに「メニュー」という項目があり、任意のメニュー コントロールを指定することができるようになっています。初期状態では "なし" になっているので、ここを先ほど作成した "MainMenu" に変更します。
次に、メニューの「終了」ボタンが押された時のイベント処理を記述します。ウィンドウ内の適当な部分を右クリックし、「メニューによるイベント」をクリックします。
#image(p6-3.png)
#image(p6-4.png)
ここで表示されたプロシージャがメニューの「終了」をクリックしたときに実行されるイベント プログラムになります。このプロシージャには、下のようなコードを記述してみましょう。
#asciiart(blockquote){
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つの工程
-メニューの作成
-ウィンドウへのメニュー貼り付け
-メニューイベントのコーディング
が完了しました。コンパイル、実行をして、「終了」ボタンがちゃんと動作するこどうか、試してみましょう。