首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • list control的右键菜单通过什么消息或函数进行控制? [已结帖,结帖人:sckc2008]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sckc2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-20 08:16:20 楼主
    该list control在一个子窗口里,在WM_COMMAND消息里截获不到右键菜单,该怎么控制呢?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      8

    发表于:2008-08-20 09:13:391楼 得分:3
    右键菜单怎么产生的,菜单的父窗口是谁,就由谁来处理命令消息。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Amuro1987218
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:21:552楼 得分:3
    父窗口响应WM_CONTEXTMENU
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sckc2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 12:42:483楼 得分:0
    引用 1 楼 Mackz 的回复:
    右键菜单怎么产生的,菜单的父窗口是谁,就由谁来处理命令消息。

    是啊,我就是问的怎么处理啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dyx1024
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 13:04:024楼 得分:3
    C/C++ code
    //ON_WM_CONTEXTMENU()消息 void CTestMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) { CPoint cp; GetCursorPos(&cp); CRect rectLeftListBox; CListBox *m_pLeftListBox = (CListBox*)GetDlgItem(IDC_TESTMENU_LIST); m_pLeftListBox->GetClientRect(&rectLeftListBox); ClientToScreen(rectLeftListBox); if(PtInRect(&rectLeftListBox, cp)) { m_pRightMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, cp.x, cp.y, this) ; } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oh_my_god
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 14:21:475楼 得分:6
    处理错了吧,你应该在listctrl 的NM_RCLICK 事件里面处理
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • acpg1986
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:16:346楼 得分:5
    [Quote=引用 5 楼 oh_my_god 的回复:]
    处理错了吧,你应该在listctrl 的NM_RCLICK 事件里面处理

    同意
    在BEGIN_MESSAGE_MAP END_MESSAGE_MAP()之间添加ON_NOTIFY(NM_RCLICK, IDC_LIST, OnNMRclickList),IDC_LIST是需要处理的list controlID,OnNMRclickList是处理函数
    void CMyDlg::OnNMRclickList(NMHDR *pNMHDR, LRESULT *pResult)
    {
    *pResult = 0;
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    CPoint point;
    ::GetCursorPos(&point);
    CMenu menu;
    menu.LoadMenu(IDR_MENU); //读取资源,IDR_MENU为弹出的菜单ID
    menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x,point.y,this);
    }

    至于菜单上命令的完成是通过另外一个消息函数处理,如你想处理菜单命令ID为ID_TEST
    ON_COMMAND(ID_POP_TRAYRETURN, OnTest)
    void CMyDlg::OnTest()
    {

    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sckc2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:53:177楼 得分:0
    NM_RCLICK可以生成右键菜单
    COMMAND消息处理不了右键菜单的ID,我用的是SDK编的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhb1190
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 12:45:238楼 得分:0
    你的ON_COMMAND菜单消息映射正确吗?
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved