ListCtrl中如何让右键点一个Item的时候弹出浮动菜单?
如题,右键点一个Item时弹出一个浮动菜单,对其进行设置.类似右键点击文件弹出的菜单一样
问题点数:100、回复次数:5Top
1 楼daaoke(达奥克)回复于 2005-06-03 20:06:08 得分 10
思路:创建一个菜单类资源;重载ListCtrl::OnComMsg()
Top
2 楼talkfalse(talkfalse)回复于 2005-06-03 20:12:24 得分 0
思路我知道,但是不会写代码Top
3 楼missle(闪人)回复于 2005-06-03 20:40:38 得分 90
兄弟你好运阿,我正在写:代码如下:
重载你控件的OnRclick消息,我这个是CTreeView类继承过来的,但是不影响你的使用
void CCateTreeView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CTreeCtrl & m_Tree = GetTreeCtrl(); // 使用你的tree控件的对应变量
HTREEITEM hSelect = m_Tree.GetSelectedItem();
HTREEITEM hLight = m_Tree.GetDropHilightItem();
if(hLight != NULL && hSelect != hLight)
hSelect = hLight;
if(hSelect == NULL)
return;
m_Tree.SelectItem(hSelect);
// Load menu
HMENU hMenu;
HMENU hMenuTrackPop;
//IDR_MENU_CONTEXT 是你的右键菜单资源名
hMenu = ::LoadMenu(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MENU_CONTEXT));
if(NULL == hMenu)
return;
hMenuTrackPop = ::GetSubMenu(hMenu, 0);
CRect rc;
m_Tree.GetItemRect(hSelect, &rc, FALSE);
ClientToScreen(&rc);
// if selected item is cate, not card
// disable all menu items assocated with card
DWORD data = m_Tree.GetItemData(hSelect);
CPoint oPoint;
GetCursorPos( &oPoint);
TrackPopupMenu(hMenuTrackPop, TPM_LEFTALIGN | TPM_LEFTBUTTON, oPoint.x, oPoint.y, 0,
m_Tree.m_hWnd, NULL);
DestroyMenu(hMenu);
*pResult = 0;
}
Top
4 楼talkfalse(talkfalse)回复于 2005-06-03 21:16:09 得分 0
missle(闪人):
谢谢了
我的2个问题都是你回的:)
我先去试试Top
5 楼talkfalse(talkfalse)回复于 2005-06-03 21:19:05 得分 0
对了,正好顺便问问.我就你说那个用ListCtrl实现一行显示2个item很BT的人,呵呵~~~
如果用你提供给我的grid控件是不是处理的方法一样呢?Top




