用ATL写的控件,加入了属性页,但在VB中加入后点击右键菜单最下面没有"属性"一项,要加什么接口才能使之可在菜单中打开属性对话框? 在线 ATL默认的实现的控件在VB中只能通过属性列表中的Custom来打开属性对话框我想要实现可在菜单中打开的功能,怎么做?在线等,解决立即给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 附带说一句,用MFC做的控件默认就可以实现在菜单中打开属性对话框 属性页很简单,它也是一个组件,并且只需要暴露一个关键接口IPropertyPage。如果要把属性页加到某一个控件,这个控件必须暴露一个接口ISpecifyPropertyPages,在它的GetPages()返回的CAUUID结构中包含你需要指定的属性页的CLSID就可以。如果用ATL更简单,只需要用向导添加一个属性页,然后在控件的BEGIN_PROPERTY_MAP块中加入PROP_PAGE(属性页的CLSID)就可以。 那我明白你意思了,这是IOleVObject::DoVerb, IOleObject::EnumVerbs实现的,你可以参考CCmdTarget::DoOleVerb(), CmdTarget::EnumOleVerbs()。 ATL支持用注册表实现IEnumVerb(),方法在{Youre CLSID}{ 'Verb' { '0' = s '&Properties, 0, 2' }}子键名以及值分别表示typedef struct tagOLEVERB { LONG iVerb; LPOLESTR lpszVerbName; DWORD fuFlags; DWORD grfAttribs; } OLEVERB; 的四个值。 我来说一个偏方,虽然vb下面不能打开属性页,但是属性还是可以修改的。你可以在vb下面随便打开一个控件的属性,比如选中form按f9。然后再选择你插入的控件,就可以修改属性了。当然如果你需要自定义属性页,还要参考上面arxing(阿行) 的方法。 arxing(阿行) 谢谢,我来试试看whell(平凡人生) 我不是只在VB里面用,而要插入到WPS中,所以才一定要有右键菜单项 MFC的列表框不显示内容!! 谁有云台控制的图片? WM_KEYDOWN或者WM_CHAR消息附加参数lParam问题 请问收不到部分事件是怎么回事?高手帮忙~ 管道串值问题,急!!! 有没有大神能直接不创建MFC工程,而直接用一个main.cpp创建一个CWnd窗口? 请问:打開一文本文件,搜索并保存為另一文本文件 一个比较变态的问题,是关于ListView的文字的设置问题 Inside OLE 关于默认菜单的问题,请帮助 关于在CEdit中显示.txt文件内容 如何将表示十六进制的字符串转换为int64
如果要把属性页加到某一个控件,这个控件必须暴露一个接口ISpecifyPropertyPages,在它的GetPages()返回的CAUUID结构中包含你需要指定的属性页的CLSID就可以。
如果用ATL更简单,只需要用向导添加一个属性页,然后在控件的BEGIN_PROPERTY_MAP块中加入PROP_PAGE(属性页的CLSID)就可以。
{Youre CLSID}
{
'Verb'
{
'0' = s '&Properties, 0, 2'
}
}
子键名以及值分别表示typedef struct tagOLEVERB { LONG iVerb; LPOLESTR lpszVerbName; DWORD fuFlags; DWORD grfAttribs; } OLEVERB; 的四个值。
你可以在vb下面随便打开一个控件的属性,比如选中form按f9。然后再选择你插入的控件,就可以修改属性了。
当然如果你需要自定义属性页,还要参考上面arxing(阿行) 的方法。
谢谢,我来试试看whell(平凡人生)
我不是只在VB里面用,而要插入到WPS中,所以才一定要有右键菜单项