A Microsoft Outlook email forum. Outlook Banter

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.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Add-ins for Outlook
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Cannot trigger OnChange event from inspector's command bar combo box



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old October 10th 06, 08:23 AM posted to microsoft.public.outlook.program_addins
tonyl
external usenet poster
 
Posts: 13
Default Cannot trigger OnChange event from inspector's command bar combo box


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:ispEventAdvise
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
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
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


All times are GMT +1. The time now is 06:23 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.