MFC VC++ アプリケーション Tip集 サイト


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 へ戻る