解决方案 »
- mfc 中如何动态创建ACTIVEX控件以及动态修改控件属性
- VC如何在对话框显示后自动添加一些操作(如调用其它函数)?
- 自己发送出去的广播包,自己能不能收到?会不会有什么过滤操作?
- 关于视频捕捉
- 三喜临门!散分1000!——3
- 如何从一个mpeg文件中获取连续帧画面?
- 谁用过SQL和vc编程的请进(高手请进)
- 关于IHTMLStyle接口的问题
- 如何将vc程序打包生成setup文件
- Wininet API提供的ftp函数支持断点续传吗??
- 如何利用HttpOpenRequest,HttpAddRequestHeaders,HttpSendRequestEx这三个函数发送POST请求?
- 关于用c++填充网页密码和账户问题
class ATL_NO_VTABLE CMyInspectorEvent :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyInspectorEvent, &CLSID_NULL>,//CLSID_MyInspectorEvent
public IConnectionPointContainerImpl<CMyInspectorEvent>,
public CProxy_IMyInspectorEventEvents<CMyInspectorEvent>,
public IDispatchImpl<IMyInspectorEvent, &IID_IMyInspectorEvent, &LIBID_OutlookAddinLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
,public IDispEventSimpleImpl<1,CMyInspectorEvent,&__uuidof(Office::_CommandBarButtonEvents)>//响应点击按钮事件
,public IDispEventSimpleImpl<2,CMyInspectorEvent,&__uuidof(Outlook::ItemEvents)>//响应关闭窗口事件
,public IDispEventSimpleImpl<3,CMyInspectorEvent,&__uuidof(Outlook::ApplicationEvents)> //响应发送邮件事件
{
}
在主atl类的NewInspector(IDispatch* pdispInspector)方法中(NewInspector方法响应打开新建邮件页面)
IDispatchPtr pDisp(pdispInspector);
CComQIPtr<_Inspector> spInspector(pDisp);
CComPtr< IDispatch > spItem;
CComQIPtr < Office::_CommandBarButton> cmdButton; //得到MailItem
spInspector->get_CurrentItem(&spItem);
CComQIPtr< Outlook::_MailItem> spMailItem(spItem); if(!spMailItem)//新邮件页面
{
return;
} //在新邮件页面中显示“发送提醒”按钮
CComPtr<_CommandBars> pCmdBars;
spInspector->get_CommandBars(&pCmdBars);
...
IDispatch* pEvent = NULL;
CMyInspectorEvent::CreateInstance(&pEvent);
CMyInspectorEvent* pEvent = (CMyInspectorEvent*)pEvent; pEvent->m_MailItem=spMailItem;
pEvent->m_RecipientNoticeButton=cmdButton; pEvent->AdviseEvent();// 自定义的函数,绑定CMyInspectorEvent中的那三个事件. 每次点击新建都会进入NewInspector,但新建多个页面后,每个页面的m_RecipientNoticeButton按钮都会触发多次事件。
怎么样不要绑定多次事件,请指教。