如何在系统菜单中添加一个自己的菜单项
来源:互联网 发布:二更网络主页 编辑:程序博客网 时间:2024/04/29 22:21
CSDN地址: http://topic.csdn.net/u/20080722/18/8517e419-7788-4d1c-9029-7a806f5da46c.html
全文:
如题,目前我要做的就是在系统菜单中添加一个自己的菜单项(比如是“联系人”这个界面,右下脚的“菜单”),并响应自己要实现的功能。分不够的我可以另外开帖给你加上。谢谢~~~~~
- ciahi
- (爪哇乞丐)
- 等 级:
AppendMenu不行吗?
- ro1ck
- 等 级:
谢谢楼上的,不过应该没有这么简单吧,我指的菜单是系统对话框,而不是自己程序的对话框,比如系统有个对话框叫"联系人",该窗口有它自己的菜单项.目前大概方向是修改注册表,但是一直没发现相关的主键,请有做过的达人指教。
- btsy2000
- (毛毛虫)
- 等 级:
下面这篇文章里包括了所有你要的东西
http://msdn.microsoft.com/en-us/library/bb158572.aspx
当弹出菜单时会发送WM_INITMENUPOPUP消息,拿到菜单句柄就可以添加删除
http://msdn.microsoft.com/en-us/library/bb158572.aspx
当弹出菜单时会发送WM_INITMENUPOPUP消息,拿到菜单句柄就可以添加删除
- ro1ck
- 等 级:
谢谢楼上的,可以留下msn吗
- caicaileowince
- 等 级:
SDK例子里有ctxmenu,实质是一个com组件,添加到注册表里联系人启动的时候调用com组件
- ro1ck
- 等 级:
不是很明白楼上的意思,这个com组件是系统自带吗?
具体怎么实现的呢
具体怎么实现的呢
- ro1ck
- 等 级:
有些进展了,不过有个问题,发现在QueryContextMenu这函数中pIdo->GetData(&fe, &sm)这个函数失败了,GetLastError居然是120(这个系统不支持该功能).
- ro1ck
- 等 级:
自己顶
- wuminxss
- (英俊走一回)
- 等 级:
如果我要在Start->Messaging界面的右键菜单加一个菜单项,与之相关的class和Context是哪个?
微软有公布吗?
- ro1ck
- 等 级:
wuminxss ,应该是 context:Inbox,class就看具体哪个界面了
- hnhuibo
- (飞扬洞庭)
- 等 级:
d
- ro1ck
- 等 级:
在添加菜单项时,为什么要加DelayLoad这个dword键值呢?如果设置为1,菜单响应时,不会调用到自己定义的COM组件的QueryContextMenu函数,而且菜单直接显示的菜单项名称是注册表中默认的字串名。如果设置为0,在COM组件的QueryContextMenu函数里,有个pIdo->GetData(&fe,&sm)函数,会失败,有人知道为什么吗?是不是我注册表中少了什么项?
- ren22342411
- (枪挑一条线)
- 等 级:
要使用IContextMenu这个接口。。。
可以参照一下这个例子,它在TMAIL里右下角的menu添加了两条选项
/Program Files/Windows Mobile 6 SDK/Samples/Common/CPP/Win32/InboxMenuExtensibility/
Contacts也是支持这个接口的
可以参照一下这个例子,它在TMAIL里右下角的menu添加了两条选项
/Program Files/Windows Mobile 6 SDK/Samples/Common/CPP/Win32/InboxMenuExtensibility/
Contacts也是支持这个接口的
- ro1ck
- 等 级:
谢谢楼上.
还有个问题,在QueryContextMenu时如果同时insertmenu 2个菜单项,
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION|MF_STRING , idCmdFirst, _T("Menu Test 1") );
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION|MF_STRING , idCmdFirst, _T("Menu Test 2") );
在InvokeCommand中如何区分菜单,如何区分这两个菜单项?LPCMINVOKECOMMANDINFO pici->lpVerb是一个很大的数,并不是 0, 或者1
还有个问题,在QueryContextMenu时如果同时insertmenu 2个菜单项,
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION|MF_STRING , idCmdFirst, _T("Menu Test 1") );
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION|MF_STRING , idCmdFirst, _T("Menu Test 2") );
在InvokeCommand中如何区分菜单,如何区分这两个菜单项?LPCMINVOKECOMMANDINFO pici->lpVerb是一个很大的数,并不是 0, 或者1
- ren22342411
- (枪挑一条线)
- 等 级:
lpVerb
A 32-bit value containing the commandbeing invoked, expressed as either a string (for programmaticinvocation), or a menu-identifier offset (for user invocation).
Whencontaining a string, the HIWORD is non-zero. In this case, lpVerbcontains the address of a null-terminated string specifying thelanguage-independent name of the command. The system providespredefined constant values for some command strings. For details, seethe table below.
When containing a menu-identifier offset,the HIWORD is zero. In this case, lpVerb contains a menu-identifieroffset of the command in the LOWORD. The shell specifies this valueusing MAKEINTRESOURCE(idOffset). For details, see "User InterfaceServices" in the Windows CE .NET 4.2 documentation.
A 32-bit value containing the commandbeing invoked, expressed as either a string (for programmaticinvocation), or a menu-identifier offset (for user invocation).
Whencontaining a string, the HIWORD is non-zero. In this case, lpVerbcontains the address of a null-terminated string specifying thelanguage-independent name of the command. The system providespredefined constant values for some command strings. For details, seethe table below.
When containing a menu-identifier offset,the HIWORD is zero. In this case, lpVerb contains a menu-identifieroffset of the command in the LOWORD. The shell specifies this valueusing MAKEINTRESOURCE(idOffset). For details, see "User InterfaceServices" in the Windows CE .NET 4.2 documentation.
- ren22342411
- (枪挑一条线)
- 等 级:
http://msdn.microsoft.com/en-us/library/bb773215(VS.85).aspx
- ren22342411
- (枪挑一条线)
- 等 级:
(LPCTSTR)lpici->lpVerb
是你menu上显示的字符串的地址
是你menu上显示的字符串的地址
- ro1ck
- 等 级:
非常感 ren22342411 :),果然是高手啊,方便留下联系方式吗?
向你学习!
呵呵
向你学习!
呵呵
- ro1ck
- 等 级:
但是我读出来显示是乱码,并不是菜单名,晕
- ro1ck
- 等 级:
是空的
- ren22342411
- (枪挑一条线)
- 等 级:
好好检查一下。。
QueryContextMenu(HMENU hmenu,UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
中
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION ¦MF_STRING , idCmdFirst, _T("Menu Test 1") );
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION ¦MF_STRING , idCmdFirst, _T("Menu Test 2") );
为什么两个Menu的ID是相同的?
他们的范围应该在idCmdFirst 和 idCmdLast 之间
还有你现在是不是menu已经扩展出来,只是没有执行么?
QueryContextMenu(HMENU hmenu,UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
中
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION ¦MF_STRING , idCmdFirst, _T("Menu Test 1") );
InsertMenu ( hmenu, indexMenu, MF_BYPOSITION ¦MF_STRING , idCmdFirst, _T("Menu Test 2") );
为什么两个Menu的ID是相同的?
他们的范围应该在idCmdFirst 和 idCmdLast 之间
还有你现在是不是menu已经扩展出来,只是没有执行么?
- ren22342411
- (枪挑一条线)
- 等 级:
lz我知道你的问题了...你还没有实现接口IContextMenu中
GetCommandString(UINT_PTR idCmd,UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax)
这个方法...
这个方法的作用是把menu的ID和其字符串对应起来的
GetCommandString(UINT_PTR idCmd,UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax)
这个方法...
这个方法的作用是把menu的ID和其字符串对应起来的
- ro1ck
- 等 级:
啊,强,我没有对这个函数进行操作,我修改试试
- ren22342411
- (枪挑一条线)
- 等 级:
好好看一下那个例子。。。
我邮箱rr.tj.sse@gmail.com
有问题大家可以一起讨论 :)
我邮箱rr.tj.sse@gmail.com
有问题大家可以一起讨论 :)
- ro1ck
- 等 级:
谢谢:)
- ro1ck
- 等 级:
搞定了,谢谢,菜单问题差不多了,现在有个关键的问题,比如现在我在联系人添加了个自己的菜单,在菜单响应怎么获得目前联系人的信息呢,比如名称,电话等
- ren22342411
- (枪挑一条线)
- 等 级:
这个可能需要用到POOM方面的东西
需要使用IItem接口了,可能还有
IPimSrcContactListIcon 联系人的图标
IPimSrcContactNew 创建一个联系人
IPimSrcContactSummaryCard 点击一个联系人
IPimSrcContactEdit 编辑
这些接口。。没有深入研究过
可以参照下面这个例子:
/Program Files/Windows Mobile 6 SDK/Samples/PocketPC/CPP/win32/PimExProvider
主要还是好好研究POOM
需要使用IItem接口了,可能还有
IPimSrcContactListIcon 联系人的图标
IPimSrcContactNew 创建一个联系人
IPimSrcContactSummaryCard 点击一个联系人
IPimSrcContactEdit 编辑
这些接口。。没有深入研究过
可以参照下面这个例子:
/Program Files/Windows Mobile 6 SDK/Samples/PocketPC/CPP/win32/PimExProvider
主要还是好好研究POOM
- ro1ck
- 等 级:
联系人这个com有用过,现在问题在于,比如现在点桌面右下角的联系人,进入联系人界面,而且我的菜单已经嵌入联系人菜单中。比如联系人有3个联系人,"张三","李四","王五",然后我选择"李四"这个联系人,弹出菜单,这时候我的菜单处理函数要如何获得我当前选择的是"李四"呢?
- ro1ck
- 等 级:
顶
- ro1ck
- 等 级:
终于解决了,其实获取当前联系人index的代码在ctxmenu例子中是有的,IDataObject去获取指针进行操作,只是没有对特定联系人进行操作,如果要获取联系人的指针,formatEtc.cfFormat =RegisterClipboardFormat(CFNAME_ITEMREFARRAY);这个参数必须这样设置。http://msdn.microsoft.com/en-us/library/ms879952.aspx上的菜单view有关联系人的Clipboard format的介绍。
好了,结帖了,非常感谢关注这个帖子的朋友们。特别感谢btsy2000 提供了研究方向,还有ren22342411 ,在菜单问题上的帮助。希望可以和大家一起研究mobile。
好了,结帖了,非常感谢关注这个帖子的朋友们。特别感谢btsy2000 提供了研究方向,还有ren22342411 ,在菜单问题上的帮助。希望可以和大家一起研究mobile。
- 如何在系统菜单中添加一个自己的菜单项
- 在系统菜单中添加菜单项
- 在系统菜单中添加菜单项
- 在Outlook中添加自己的菜单
- 在Outlook中添加自己的菜单
- 如何给系统菜单添加一个菜单项
- 如何在添加新的系统菜单项CMenu
- 如何向系统菜单中动态添加菜单项
- 001在系统菜单中添加菜单项
- Delphi在系统菜单中添加菜单项
- Delphi在系统菜单中添加菜单项
- 如何在IE右键菜单中添加菜单项
- 如何在IE右键菜单中添加菜单项
- 如何在IE右键菜单中添加菜单项
- 如何在MFC中动态添加菜单/菜单项、子菜单、右键菜单
- 在资源管理器右键菜单中添加新的菜单项
- 在资源管理器右键菜单中添加新的菜单项
- 在menuconfig 菜单中添加自己编写的驱动选项
- 关于Linux下监控WEB服务
- HTML颜色代码表
- ExecuteScalar()与ExecuteNonQuery 方法怎么用
- 生活随笔:天热得让人烦躁
- 继承 组合
- 如何在系统菜单中添加一个自己的菜单项
- Firefox 超级拖拽 插件 Easy DragToGo
- 目标
- PHP PDO基础认知和学习笔记
- 使用cwRsync实现windows下文件定时同步(备份)
- javascript js脚本中,正确的代码却没有正确的结果【怪异】
- Informix 11.5 新特性概览
- bochs--开源x86 emulator
- Liferay的Debug配置