树控件里选中,右键,弹出快捷菜单
怎么做?
怎么做?
解决方案 »
- CTreeCtrl 设置焦点
- win32如何编程实现选中文字的效果,没用到控件
- 一个排列组合的问题:有18位的二进制环形编码(18位连成一圈,只能有一个连续的4个1作为识别码),请问这种组合共有多少种?
- 急急急!!!socket通信中,如何让server端的数据调取和处理工作同时进行??
- 已知进程ID,怎么得到他属于哪个服务?(就70了.)达人请进
- 请帮小弟一个忙(FindWindow())!!!!!!!!!!!!!!!!!!!!!1
- 键盘消息
- 关于调试ISAPI的问题
- 向各位请教字符串转16进制长整型的问题-----急!!!!!
- 请教大家一个关于初始化类中成员的问题
- HP SNMP++ 的在win2000下运行的问题
- 用mfc创建窗口(dialog1),由dialog1调用dialog2,dialog2最小化时没有显示在任务栏,怎么回事呀,求解。
CMenu Menu;
POINT point;
GetCursorPos(&point);
Menu.LoadMenu(IDR_GTMENU);
Menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,point.x,point.y,this);
menu.LoadMenu(IDR_PopMenu);
CMenu* pMenu;
pMenu=menu.GetSubMenu(0);
pMenu->Track.....
pMenu->DestroyMenu();
GetCursorPos(&point)取得点后不能直接使用否则与我们想的不一样。
ClientToScreen()
ScreenToClient(),不知道是那个函数你试一下,假如你看不到菜单有可能是位置的问题,马上用另外一个函数即可
HTREEITEM CurItem;
GetCursorPos(&CurPoint);
m_wndGameTree.ScreenToClient(&CurPoint);
CurItem=m_wndGameTree.HitTest(CurPoint);
if(CurItem){
m_wndGameTree.SelectItem(CurItem);
CMenu GTMenu;
CMenu* pPopupMenu;
POINT point;
GetCursorPos(&point);
GTMenu.LoadMenu(IDR_GTMENU);
pPopupMenu=GTMenu.GetSubMenu(0);
pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,point.x,point.y,this);
}
以上是我以前用到的代码...仅供参考
// 选中某项
LPPOINT m_rPoint = new POINT() ;
GetCursorPos(m_rPoint);
CRect recttree;
m_chatertree.GetWindowRect(&recttree);
CPoint m_in;
m_in.x=m_rPoint->x-recttree.left;
m_in.y=m_rPoint->y-recttree.top;
delete m_rPoint;
HTREEITEM m_rItem;
m_rItem=m_chatertree.HitTest(m_in);
m_chatertree.SetItemState(m_rItem,TVIS_SELECTED,NULL); //检查是否选正确
if(m_rItem == NULL || m_rItem == TVI_ROOT)
{
return;
} // 弹出菜单
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
CMenu menu;
menu.CreatePopupMenu();//声明一个弹出式菜单
menu.AppendMenu(MF_STRING,WM_DELETE, "删除");说明:WM_DELETE是自定义的消息,要添加响应函数
我还差166就进top100了..