赛迪网 > IT技术 C/C++ > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

用C++ Builder创建上下文菜单扩展处 (1)

发布时间:2006.02.09 05:57     来源:CSDN    作者:行舟

当用户右击一个shell对象时,shell会显示它的上下文菜单。文件系统对象有大量的标准菜单项,如"剪切"和"拷贝",这些都是缺省的菜单项。如果对象是一个文件,是文件类的成员,就能够在注册表里指定附加的菜单项。Shell检查注册表,看看文件类型是否与一些上下文菜单handler相关联,如果是,shell会咨询这些handler是否添加额外的菜单项。

上下文菜单handler是一种shell扩展handler,它添加命令到已有的上下文菜单中。上下文菜单handler都与特定的文件类相关联,并且在显示这类文件的成员的上下文菜单时调用。通过实现和注册这样一个handler,能够动态地添加菜单项到对象的上下文菜单上,从而为特殊的对象定制菜单。

上下文菜单Handler的工作原理

作为一种shell扩展handler,上下文菜单handler同所有其它handler一样, 是进程内COM 对象,即对象作为动态连接库 (DLL)实现。除了IUnknown接口外,上下文菜单还必须导出IShellExtInit和IContextMenu接口,作为选择,上下文菜单也能导出IContextMenu2和IContextMenu3,这些接口可以实现自画菜单项。

IShellExtInit接口仅仅被shell用来初始化handler,主要的操作通过handler的IContextMenu接口进行。Shell首先调用IContextMenu::QueryContextMenu,传送一个HMENU句柄,这个方法用它来增加上下文菜单。如果用户亮选了这些新添加的某个命令项, IContextMenu::GetCommandString将被调用,以取得这条菜单的帮助信息,把它显示在资源管理器的状态条上。如果用户单击了handler的条目,shell调用IContextMenu::InvokeCommand,从而handler能够执行合适的操作。

实现IContextMenu接口

1、实现QueryContextMenu方法

Shell通过调用IContextMenu::QueryContextMenu,允许handler把它的菜单项添加到菜单中。QueryContextMenu共有5个参数,各参数作用如下:

1) Hmenu:HMENU类型,表示上下文菜单的句柄。
2) IndexMenu:第一个被添加的菜单索引。
3) IdCmdFirst:添加的菜单ID初值。
4) idCmdLast:添加的菜单ID最大值。

5) uFlags:与上下文菜单相关的状态标志,共有3种,如下表:

CMF_DEFAULTONLY用户选择了缺省的命令,通常是通过双击对象产生。QueryContextMenu 在把控制返回给shell前不应该修改菜单。
CMF_NODEFAULT菜单没有缺省的条目,这个方法应该把它的命令加到菜单中。
CMF_NORMAL上下文菜单将被正常显示,这个方法应该把它的命令加到菜单中。

1 2 3 4 5 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· C++编程人员容易犯的10个C#错误 (02-08) · C++中用函数模板实现和优化抽象操作 (02-07)
· C++类型转换时定义非成员函数 (02-07) · C++继承性应用实例 日期和时间 (02-07)
· C++中的静态联编和动态联编介绍 (01-19) · C++编程批评系列 继承的本质 (01-17)
· 提供一个基于C++的加密/解密算法 (01-10) · C#中实现DataGrid双向排序 (01-10)
· C++之父Bjarne谈C++在2005年 (01-10) · 周末巨献:有可能挑战Java优势的四种技术 (12-09)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管