The Tips for Developers > ポップアップメニューの表示
|
|
メニューリソースの作成 | |||
まず、MFC で適当なプロジェクトを作成し、リソースタブを選択し、「リソースフォルダ」を右クリックし、「挿入」を選択する。 次に、「リソースの挿入」ダイアログボックスより、「Menu」を選択し、「新規作成」ボタンを押下する。 表示されたメニューを選択し、「プロパティ」を選択する。 表示された「メニューアイテムプロパティ」の「キャプション」テキストボックスに適当な文字を入力する。 メニューバーに適当な文字を入力しないと、プルダウンメニューを編集が不可能なためである。。 (下の例では、「s」を入力しているが、どのような文字でもよい。) プルダウンメニューを選択し、「ID」、「キャプション」を入力する。 |
|||
イベント関数の作成 | |||
以下の例では、ビューエリアにおいて右クリックされた場合にポップアップメニューを表示することとする。 他の場合においても、イベントメッセージを受け取る関数に同様の記述を行うことで対応が可能である。 以下は、右クリック時のイベント関数の例である。
次に、GetSubMenu メソッドを呼び出し、ポップアップメニューのハンドルを持つ CMenu オブジェクトへのポインタを取得する。この場合、GetSubMenu の引数は常に「0」にする。 8 行目において、イベントから通知されたクライアント座標をスクリーン座標に変換している。これは、9 行目の TrackPopupMenu の 2 番目と 3 番目の引数がスクリーン座標にする必要があるためである。 その TrackPopupMenu メソッドだが、指定された位置にポップアップメニューを表示する CMenu クラスのメソッドである。 1 番目の引数には、メニューの表示位置の指定方法とポップアップメニューの選択方法を指定する。 (上記例の場合は、指定された x 座標の左側に表示し、マウス右クリックで指定するように設定している。) 2 番目、3 番目は前述したが、ポップアップメニューの表示されるスクリーン座標を指定する。 4 番目の引数には、ポップアップメニューを所有する画面を指定する。この画面が、ポップアップメニューからの WM_COMMAND メッセージを受け取る。 |
|||
メニュー関数の実装 | |||
メニューを右クリックし、ClassWizard を起動する。その際、既存クラスの流用を指定する。 ポップアップメニューのオブジェクトIDを指定し、メッセージリストボックスから、「COMMAND」を選択する。 そして、「関数の追加」ボタンを押下すると、関数名の確認ののち、メニュー関数が実装される。 MFCでは、メニュー関数を実装しない場合、当該メニューが選択不可になるので注意が必要である。 以下の例では、ビューエリアにおいて右クリックされた場合にポップアップメニューを表示することとする。 他の場合においても、イベントメッセージを受け取る関数に同様の記述を行うことで対応が可能である。
|