7章.CListCtrlクラス リストコントロール 7−19.右クリックでメニューを出す |
IDR_MENU1でメニュー(下にポップアップ)を作成します。 以下のように位置を取得して表示します。 void C〜Dlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult) {//NM_RCLICK // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください CMenu cme; LPNMLISTVIEW lpnmlv=(LPNMLISTVIEW)pNMHDR; POINT pt=lpnmlv->ptAction; ::ClientToScreen(pNMHDR->hwndFrom,&pt); cme.LoadMenu(IDR_MENU1); cme.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTBUTTON|TPM_RIGHTBUTTON, pt.x,pt.y,this); *pResult = 0; } void C〜Dlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu) { CDialog::OnMenuSelect(nItemID, nFlags, hSysMenu); // TODO: この位置にメッセージ ハンドラ用のコードを追加してください POSITION pos; int rel,oki; CListCtrl *clc=(CListCtrl *)GetDlgItem(IDC_LIST1); pos=clc->GetFirstSelectedItemPosition(); if(pos) { rel=clc->GetNextSelectedItem(pos); oki=clc->GetItemData(rel); switch(nItemID) { case IDM_OKI_INS: InsOki(oki); break; case IDM_OKI_DEL: DelOki(oki); break; } } } |
Top へ戻る |