![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Search this Thread | Display Modes |
#1
|
|||
|
|||
![]() When I got the new inspector event, I will create a combo box and toolbar to the commandbars on the inspector window. And try to add the OnChange event using the call DispEventAdvise or AtlAdvise. When I use DispEventAdvise, it return S_OK. however, no one trigger the call OnChangeCommandBarComboBox. When I use AtlAdvise, the call returns 0x80040200 which means there is CONNECT_E_NOCONNECTION Error Anyone knows how to solve it? Thanx alot. Tony connect.h ======== class ATL_NO_VTABLE CConnect : public CComObjectRootExCComSingleThreadModel, public CComCoClassCConnect, &CLSID_Connect, ..... public IDispEventSimpleImpl3,CConnect,&__uuidof(Outlook: :InspectorsEvents), public IDispEventSimpleImpl4,CConnect,&__uuidof(Office:: _CommandBarComboBoxEvents) { public: .... typedef IDispEventSimpleImpl/*nID =*/ 3,CConnect, &__uuidof(Outlook::InspectorsEvents) NewInspectorEvents; typedef IDispEventSimpleImpl/*nID =*/ 4,CConnect, &__uuidof(Office::_CommandBarComboBoxEvents) CommandBarComboBoxEvents; BEGIN_SINK_MAP(CConnect) .... SINK_ENTRY_INFO(3, __uuidof(Outlook::InspectorsEvents),/*dispid*/ 0xf001, OnNewInspector, &OnNewInspectorInfo) // new inspector SINK_ENTRY_INFO(4, __uuidof(Office::_CommandBarComboBoxEvents),/*dispid*/ 0x1, OnChangeCommandBarComboBox, &OnComboBoxChangeInfo) // new inspector END_SINK_MAP() .... void __stdcall OnNewInspector(IDispatch *lpInspector); void __stdcall OnChangeCommandBarComboBox(IDispatch *lpCtrl); }; connect.cpp =========== ..... _ATL_FUNC_INFO OnNewInspectorInfo = {CC_STDCALL,VT_EMPTY,1, {VT_DISPATCH}}; _ATL_FUNC_INFO OnComboBoxChangeInfo = {CC_STDCALL,VT_EMPTY,1, {VT_DISPATCH}}; void __stdcall CConnect::OnNewInspector(IDispatch *lpInspector) { CComQIPtrOutlook::_Inspector spInspector(lpInspector); CComPtrOffice::_CommandBars spCmdBars; spInspector-get_CommandBars(&spCmdBars); VARIANT vTitle, vPos, vMenuBar, vTemp; vTitle.bstrVal = CString("callist").AllocSysString(); vTitle.vt = VT_BSTR; vPos.vt = VT_UI4; vPos.ulVal = 1 ; vTemp.boolVal = TRUE; vTemp.vt = VT_BOOL; vMenuBar.vt = VT_UI4; vMenuBar.ulVal = 0; CComPtrOffice::CommandBar spCmdBar; CComPtrOffice::CommandBarControls spCmdBarCtrls; CComPtrOffice::_CommandBarComboBox spCmdBarCtrl; hr = spCmdBars-Add(vTitle, vtMissing, vtMissing, vTemp, &spCmdBar); if (hr != S_OK) { log.format(CLogger::LOG_ERROR, "OnNewInspector: Add CmdBar Failure"); return; } hr = spCmdBar-get_Controls(&spCmdBarCtrls); if (hr != S_OK) { log.format(CLogger::LOG_ERROR, "OnNewInspector: Get CmdBar Controls Failure"); return; } VARIANT vType, vInt1, vBool; vType.vt = VT_UI4; vType.ulVal = 4; //MsoControlType::msoControlComboBox vInt1.vt = VT_UI4; vInt1.ulVal = 1; hr = spCmdBarCtrls-Add(vType, vtMissing, vtMissing, vInt1, vInt1, (Office::CommandBarControl **)&spCmdBarCtrl); if (hr != S_OK) { log.format(CLogger::LOG_ERROR, "OnNewInspector: Add CmdBar Control Failure"); return; } hr = AtlAdvise((IUnknown *)spCmdBarCtrl, (IUnknown*)(CommandBarComboBoxEvents *)this, __uuidof(Office::_CommandBarComboBox), &(((CommandBarComboBoxEvents *)this)-m_dwEventCookie)); m_cbxEvent.m_dwChangeEventCookie = ((CommandBarComboBoxEvents *)this)-m_dwEventCookie; if(FAILED(hr)) { log.format(CLogger::LOG_APP_DEBUG, "CCmdbarCbxEvent::Notify() ERROR: CCmdbarCbxEvent: ![]() failed: 0x%x", hr); //return; } } void __stdcall CConnect::OnChangeCommandBarComboBox(IDispatch *lpCtrl) { CComQIPtrOffice::_CommandBarComboBox spCbx(lpCtrl); MessageBox(0, "combo box selected!!!", "info", 0); } |
Ads |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Command Bar id | Erwin van der Lee | Outlook and VBA | 3 | August 23rd 06 04:13 PM |
Populate a combo box | Steffkm | Outlook - Using Forms | 4 | March 14th 06 08:28 PM |
Update TO field based on combo box selection | Lisa | Outlook - Using Forms | 0 | March 2nd 06 04:42 PM |
Trigger event on explorer right click (unselected item)? | james | Add-ins for Outlook | 5 | February 22nd 06 09:12 PM |
Command bar button FaceID Icon | donald | Add-ins for Outlook | 20 | February 9th 06 06:42 PM |