例えば、あるダイアログ上で右クリックしたときにポップアップメニューを表示する処理を行うには、次のようにする。
- メニューリソースの作成
- メニューリソースを作成する。ポップアップメニューの場合は、
下図のようなサブメニューが1つのポップアップメニューとして扱われる。つまりこの例では、
右クリックすると「終了(&X)」メニューだけのポップアップメニューが表示されるようになる。
ちなみに下図の「POPUP1」という文字列の部分は任意の文字列でよい。
- プログラムでの記述
- ClassWizardを使用し、ダイアログクラスにWM_RBUTTONDOWNメッセージのハンドラOnRButtonDown関数を定義する。
この中で、以下のようにしてポップアップメニューを呼び出す。
void CMyDialog::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, AfxGetMainWnd());
CDialog::OnRButtonDown(nFlags, point);
}
目次へ