[GME-commit] GMESRC/GME/Gme mfcdual.cpp,NONE,1.1 mfcdual.h,NONE,1.1
GME.dsp,1.89,1.90 GMEApp.cpp,1.119,1.120 GMEOLEApp.cpp,1.4,1.5
GMEOLEApp.h,1.1,1.2 GMEOLEAspect.cpp,1.2,1.3 GMEOLEAspect.h,1.1,1.2
GMEOLEColl.cpp,1.2,1.3 GMEOLEColl.h,1.2,1.3 GMEOLEModel.cpp,1.5,1.6
GMEOLEModel.h,1.2,1.3 GMEOLEPanel.cpp,1.2,1.3 GMEOLEPanel.h,1.1,1.2
GMEView.cpp,1.152,1.153 GmeLib.idl,1.7,1.8
ScrollZoomView.cpp,1.15,1.16 StdAfx.h,1.9,1.10 GME.odl,1.3,NONE
gme-commit at list.isis.vanderbilt.edu
gme-commit at list.isis.vanderbilt.edu
Thu Jul 22 10:05:43 CDT 2004
Update of /var/lib/gme/GMESRC/GME/Gme
In directory braindrain:/tmp/cvs-serv21898/GME/Gme
Modified Files:
GME.dsp GMEApp.cpp GMEOLEApp.cpp GMEOLEApp.h GMEOLEAspect.cpp
GMEOLEAspect.h GMEOLEColl.cpp GMEOLEColl.h GMEOLEModel.cpp
GMEOLEModel.h GMEOLEPanel.cpp GMEOLEPanel.h GMEView.cpp
GmeLib.idl ScrollZoomView.cpp StdAfx.h
Added Files:
mfcdual.cpp mfcdual.h
Removed Files:
GME.odl
Log Message:
Added dual interfaces to the GUI Automation
CVS User: volgy
--- NEW FILE: mfcdual.cpp ---
// mfcdual.cpp: Helpful functions for adding dual interface support to
// MFC applications
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include <afxpriv.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DualHandleException
HRESULT DualHandleException(REFIID riidSource, const CException* pAnyException)
{
USES_CONVERSION;
ASSERT_VALID(pAnyException);
TRACE0("DualHandleException called\n");
// Set ErrInfo object so that VTLB binding container
// applications can get rich error information.
ICreateErrorInfo* pcerrinfo;
HRESULT hr = CreateErrorInfo(&pcerrinfo);
if (SUCCEEDED(hr))
{
TCHAR szDescription[256];
LPCTSTR pszDescription = szDescription;
GUID guid = GUID_NULL;
DWORD dwHelpContext = 0;
BSTR bstrHelpFile = NULL;
BSTR bstrSource = NULL;
if (pAnyException->IsKindOf(RUNTIME_CLASS(COleDispatchException)))
{
// specific IDispatch style exception
COleDispatchException* e = (COleDispatchException*)pAnyException;
guid = riidSource;
hr = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF,
(e->m_wCode + 0x200));
pszDescription = e->m_strDescription;
dwHelpContext = e->m_dwHelpContext;
// propagate source and help file if present
// call ::SysAllocString directly so no further exceptions are thrown
if (!e->m_strHelpFile.IsEmpty())
bstrHelpFile = ::SysAllocString(T2COLE(e->m_strHelpFile));
if (!e->m_strSource.IsEmpty())
bstrSource = ::SysAllocString(T2COLE(e->m_strSource));
}
else if (pAnyException->IsKindOf(RUNTIME_CLASS(CMemoryException)))
{
// failed memory allocation
AfxLoadString(AFX_IDP_FAILED_MEMORY_ALLOC, szDescription);
hr = E_OUTOFMEMORY;
}
else
{
// other unknown/uncommon error
AfxLoadString(AFX_IDP_INTERNAL_FAILURE, szDescription);
hr = E_UNEXPECTED;
}
if (bstrHelpFile == NULL && dwHelpContext != 0)
bstrHelpFile = ::SysAllocString(T2COLE(AfxGetApp()->m_pszHelpFilePath));
if (bstrSource == NULL)
bstrSource = ::SysAllocString(T2COLE(AfxGetAppName()));
// Set up ErrInfo object
pcerrinfo->SetGUID(guid);
pcerrinfo->SetDescription(::SysAllocString(T2COLE(pszDescription)));
pcerrinfo->SetHelpContext(dwHelpContext);
pcerrinfo->SetHelpFile(bstrHelpFile);
pcerrinfo->SetSource(bstrSource);
TRACE("\tSource = %ws\n", bstrSource);
TRACE("\tDescription = %s\n", pszDescription);
TRACE("\tHelpContext = %lx\n", dwHelpContext);
TRACE("\tHelpFile = %ws\n", bstrHelpFile);
// Set the ErrInfo object for the current thread
IErrorInfo* perrinfo;
if (SUCCEEDED(pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID*)&perrinfo)))
{
SetErrorInfo(0, perrinfo);
perrinfo->Release();
}
pcerrinfo->Release();
}
TRACE("DualHandleException returning HRESULT %lx\n", hr);
return hr;
}
--- NEW FILE: mfcdual.h ---
// mfcdual.h: Helpful macros for adding dual interface support to
// MFC applications
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
/////////////////////////////////////////////////////////////////////
// BEGIN_DUAL_INTERFACE_PART is just like BEGIN_INTERFACE_PART,
// except that it also adds the IDispatch methods to your class
// declaration.
#define BEGIN_DUAL_INTERFACE_PART(localClass, baseClass) \
BEGIN_INTERFACE_PART(localClass, baseClass) \
STDMETHOD(GetTypeInfoCount)(UINT FAR* pctinfo); \
STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo); \
STDMETHOD(GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames, LCID lcid, DISPID FAR* rgdispid); \
STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr); \
/////////////////////////////////////////////////////////////////////
// END_DUAL_INTERFACE_PART is just like END_INTERFACE_PART. It
// is only added for symmetry...
#define END_DUAL_INTERFACE_PART(localClass) \
END_INTERFACE_PART(localClass) \
/////////////////////////////////////////////////////////////////////
// DELEGATE_DUAL_INTERFACE expands to define the standard IDispatch
// methods for a dual interface, delegating back to the default
// MFC implementation
#define DELEGATE_DUAL_INTERFACE(objectClass, dualClass) \
STDMETHODIMP_(ULONG) objectClass::X##dualClass::AddRef() \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
return pThis->ExternalAddRef(); \
} \
STDMETHODIMP_(ULONG) objectClass::X##dualClass::Release() \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
return pThis->ExternalRelease(); \
} \
STDMETHODIMP objectClass::X##dualClass::QueryInterface( \
REFIID iid, LPVOID* ppvObj) \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
return pThis->ExternalQueryInterface(&iid, ppvObj); \
} \
STDMETHODIMP objectClass::X##dualClass::GetTypeInfoCount( \
UINT FAR* pctinfo) \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE); \
ASSERT(lpDispatch != NULL); \
return lpDispatch->GetTypeInfoCount(pctinfo); \
} \
STDMETHODIMP objectClass::X##dualClass::GetTypeInfo( \
UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo) \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE); \
ASSERT(lpDispatch != NULL); \
return lpDispatch->GetTypeInfo(itinfo, lcid, pptinfo); \
} \
STDMETHODIMP objectClass::X##dualClass::GetIDsOfNames( \
REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames, \
LCID lcid, DISPID FAR* rgdispid) \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE); \
ASSERT(lpDispatch != NULL); \
return lpDispatch->GetIDsOfNames(riid, rgszNames, cNames, \
lcid, rgdispid); \
} \
STDMETHODIMP objectClass::X##dualClass::Invoke( \
DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, \
DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, \
EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr) \
{ \
METHOD_PROLOGUE(objectClass, dualClass) \
LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE); \
ASSERT(lpDispatch != NULL); \
return lpDispatch->Invoke(dispidMember, riid, lcid, \
wFlags, pdispparams, pvarResult, \
pexcepinfo, puArgErr); \
} \
/////////////////////////////////////////////////////////////////////
// TRY_DUAL and CATCH_ALL_DUAL are used to provide exception handling
// for your dual interface methods. CATCH_ALL_DUAL takes care of
// returning the appropriate error code.
#define TRY_DUAL(iidSource) \
HRESULT _hr = S_OK; \
REFIID _riidSource = iidSource; \
TRY \
#define CATCH_ALL_DUAL \
CATCH(COleException, e) \
{ \
_hr = e->m_sc; \
} \
AND_CATCH_ALL(e) \
{ \
AFX_MANAGE_STATE(pThis->m_pModuleState); \
_hr = DualHandleException(_riidSource, e); \
} \
END_CATCH_ALL \
return _hr; \
/////////////////////////////////////////////////////////////////////
// DualHandleException is a helper function used to set the system's
// error object, so that container applications that call through
// VTBLs can retrieve rich error information
HRESULT DualHandleException(REFIID riidSource, const CException* pAnyException);
/////////////////////////////////////////////////////////////////////
// DECLARE_DUAL_ERRORINFO expands to declare the ISupportErrorInfo
// support class. It works together with DUAL_ERRORINFO_PART and
// IMPLEMENT_DUAL_ERRORINFO defined below.
#define DECLARE_DUAL_ERRORINFO() \
BEGIN_INTERFACE_PART(SupportErrorInfo, ISupportErrorInfo) \
STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID riid); \
END_INTERFACE_PART(SupportErrorInfo) \
/////////////////////////////////////////////////////////////////////
// DUAL_ERRORINFO_PART adds the appropriate entry to the interface map
// for ISupportErrorInfo, if you used DECLARE_DUAL_ERRORINFO.
#define DUAL_ERRORINFO_PART(objectClass) \
INTERFACE_PART(objectClass, IID_ISupportErrorInfo, SupportErrorInfo) \
/////////////////////////////////////////////////////////////////////
// IMPLEMENT_DUAL_ERRORINFO expands to an implementation of
// ISupportErrorInfo which matches the declaration in
// DECLARE_DUAL_ERRORINFO.
#define IMPLEMENT_DUAL_ERRORINFO(objectClass, riidSource) \
STDMETHODIMP_(ULONG) objectClass::XSupportErrorInfo::AddRef() \
{ \
METHOD_PROLOGUE(objectClass, SupportErrorInfo) \
return pThis->ExternalAddRef(); \
} \
STDMETHODIMP_(ULONG) objectClass::XSupportErrorInfo::Release() \
{ \
METHOD_PROLOGUE(objectClass, SupportErrorInfo) \
return pThis->ExternalRelease(); \
} \
STDMETHODIMP objectClass::XSupportErrorInfo::QueryInterface( \
REFIID iid, LPVOID* ppvObj) \
{ \
METHOD_PROLOGUE(objectClass, SupportErrorInfo) \
return pThis->ExternalQueryInterface(&iid, ppvObj); \
} \
STDMETHODIMP objectClass::XSupportErrorInfo::InterfaceSupportsErrorInfo( \
REFIID iid) \
{ \
METHOD_PROLOGUE(objectClass, SupportErrorInfo) \
return (iid == riidSource) ? S_OK : S_FALSE; \
}
/////////////////////////////////////////////////////////////////////
Index: GME.dsp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GME.dsp,v
retrieving revision 1.89
retrieving revision 1.90
diff -C2 -d -r1.89 -r1.90
*** GME.dsp 19 Jul 2004 17:19:29 -0000 1.89
--- GME.dsp 22 Jul 2004 14:05:36 -0000 1.90
***************
*** 182,201 ****
# Begin Source File
- SOURCE=.\GME.odl
-
- !IF "$(CFG)" == "GME - Win32 Release"
-
- # ADD MTL /I "..\Interfaces" /h "GMEAppi.h" /iid "GMEApp_i.c"
-
- !ELSEIF "$(CFG)" == "GME - Win32 Debug"
-
- # ADD MTL /I "..\Interfaces" /h "GMEAppi.h" /iid "GMEApp_i.c"
- # SUBTRACT MTL /Oicf
-
- !ENDIF
-
- # End Source File
- # Begin Source File
-
SOURCE=.\GME.rc
# End Source File
--- 182,185 ----
***************
*** 296,299 ****
--- 280,287 ----
# Begin Source File
+ SOURCE=.\mfcdual.cpp
+ # End Source File
+ # Begin Source File
+
SOURCE=.\MgaOpenDlg.cpp
# End Source File
***************
*** 529,532 ****
--- 517,524 ----
# Begin Source File
+ SOURCE=.\mfcdual.h
+ # End Source File
+ # Begin Source File
+
SOURCE=.\MgaOpenDlg.h
# End Source File
***************
*** 809,822 ****
# End Target
# End Project
- # Section GME : {72ADFD7B-2C39-11D0-9903-00A0C91BC942}
- # 1:17:ID_INDICATOR_TIME:103
- # 2:2:BH:
- # 2:17:ID_INDICATOR_TIME:ID_INDICATOR_TIME
- # End Section
- # Section GME : {B718CCF7-5055-40DD-9CBD-AB17F72AB113}
- # 2:5:Class:CSearch
- # 2:10:HeaderFile:search.h
- # 2:8:ImplFile:search.cpp
- # End Section
# Section GME : {72ADFD78-2C39-11D0-9903-00A0C91BC942}
# 1:10:IDB_SPLASH:112
--- 801,804 ----
***************
*** 837,846 ****
# 2:8:ImplFile:activebrowser.cpp
# End Section
# Section GME : {B786F53C-297F-4DB8-8060-D45057217AEE}
# 2:21:DefaultSinkHeaderFile:objectinspector.h
# 2:16:DefaultSinkClass:CObjectInspector
# End Section
! # Section GME : {5C402C8B-C848-11D3-9A6E-00902721DB65}
! # 2:21:DefaultSinkHeaderFile:activebrowser.h
! # 2:16:DefaultSinkClass:CActiveBrowser
# End Section
--- 819,838 ----
# 2:8:ImplFile:activebrowser.cpp
# End Section
+ # Section GME : {5C402C8B-C848-11D3-9A6E-00902721DB65}
+ # 2:21:DefaultSinkHeaderFile:activebrowser.h
+ # 2:16:DefaultSinkClass:CActiveBrowser
+ # End Section
# Section GME : {B786F53C-297F-4DB8-8060-D45057217AEE}
# 2:21:DefaultSinkHeaderFile:objectinspector.h
# 2:16:DefaultSinkClass:CObjectInspector
# End Section
! # Section GME : {B718CCF7-5055-40DD-9CBD-AB17F72AB113}
! # 2:5:Class:CSearch
! # 2:10:HeaderFile:search.h
! # 2:8:ImplFile:search.cpp
! # End Section
! # Section GME : {72ADFD7B-2C39-11D0-9903-00A0C91BC942}
! # 1:17:ID_INDICATOR_TIME:103
! # 2:2:BH:
! # 2:17:ID_INDICATOR_TIME:ID_INDICATOR_TIME
# End Section
Index: GMEApp.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEApp.cpp,v
retrieving revision 1.119
retrieving revision 1.120
diff -C2 -d -r1.119 -r1.120
*** GMEApp.cpp 20 Jul 2004 16:01:34 -0000 1.119
--- GMEApp.cpp 22 Jul 2004 14:05:36 -0000 1.120
***************
*** 5,13 ****
#include "GMEApp.h"
! #include "GMEAppi.h"
! #include "GMEApp_i.c"
#include "Gme_i.c"
#include "GmeLib_i.c"
#include "../Mga/MgaLib_i.c"
#include "GMEstd.h"
--- 5,13 ----
#include "GMEApp.h"
!
#include "Gme_i.c"
#include "GmeLib_i.c"
#include "../Mga/MgaLib_i.c"
+ #include "Parser.h"
#include "GMEstd.h"
***************
*** 36,39 ****
--- 36,40 ----
// ATL ///////////////////////////////////////////////////////////////////////////
#include "mga_i.c"
+ #include "meta_i.c"
#include "Splash.h"
CComModule _Module;
***************
*** 135,139 ****
}
else if(bFlag && !strcmp(pszParam, "UNREGSERVER")) {
! HRESULT hr = UnRegisterTypeLib(LIBID_GmeLib, 1, 0, LANG_NEUTRAL, SYS_WIN32);
if(hr == S_OK) { AfxMessageBox("Unregistered"); exit(0); }
else { AfxMessageBox("Unregistration error: " + hr); exit(-1); }
--- 136,140 ----
}
else if(bFlag && !strcmp(pszParam, "UNREGSERVER")) {
! HRESULT hr = UnRegisterTypeLib(LIBID_GMELib, 1, 0, LANG_NEUTRAL, SYS_WIN32);
if(hr == S_OK) { AfxMessageBox("Unregistered"); exit(0); }
else { AfxMessageBox("Unregistration error: " + hr); exit(-1); }
***************
*** 305,308 ****
--- 306,312 ----
// PETER: It works only with administrator priviledges
// COleObjectFactory::UpdateRegistryAll();
+
+ // Make sure the type library is registered or dual interface won't work.
+ // AfxOleRegisterTypeLib(AfxGetInstanceHandle(), LIBID_GMELib);
// We don't want a new document at startup
Index: GMEOLEApp.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEApp.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** GMEOLEApp.cpp 25 Mar 2004 16:45:06 -0000 1.4
--- GMEOLEApp.cpp 22 Jul 2004 14:05:36 -0000 1.5
***************
*** 4,7 ****
--- 4,8 ----
#include "stdafx.h"
#include "gme.h"
+ #include "parser.h"
#include "GMEOLEApp.h"
#include "GMEOLEError.h"
***************
*** 22,25 ****
--- 23,43 ----
#endif
+ CSingletonFactory::CSingletonFactory(REFCLSID clsid,
+ CRuntimeClass* pRuntimeClass,
+ BOOL bMultiInstance,
+ LPCTSTR lpszProgID):
+ COleObjectFactory(clsid, pRuntimeClass, bMultiInstance, lpszProgID),
+ singleton(NULL)
+ {
+ }
+
+ CCmdTarget* CSingletonFactory::OnCreateObject()
+ {
+ if (singleton == NULL) {
+ singleton = COleObjectFactory::OnCreateObject();
+ }
+
+ return singleton;
+ }
/////////////////////////////////////////////////////////////////////////////
***************
*** 105,118 ****
// dispinterface in the .ODL file.
! // {071032EC-7E70-428E-9C5F-BA3BC3A20FB4}
! static const IID IID_IGMEOLEApp =
! { 0x71032ec, 0x7e70, 0x428e, { 0x9c, 0x5f, 0xba, 0x3b, 0xc3, 0xa2, 0xf, 0xb4 } };
BEGIN_INTERFACE_MAP(CGMEOLEApp, CCmdTarget)
! INTERFACE_PART(CGMEOLEApp, IID_IGMEOLEApp, Dispatch)
END_INTERFACE_MAP()
! // {013F78DC-2435-4086-B3CF-63D402DD7141}
! IMPLEMENT_OLECREATE(CGMEOLEApp, "GME.Application", 0x13f78dc, 0x2435, 0x4086, 0xb3, 0xcf, 0x63, 0xd4, 0x2, 0xdd, 0x71, 0x41)
/////////////////////////////////////////////////////////////////////////////
--- 123,138 ----
// dispinterface in the .ODL file.
! // {81191A44-B898-4143-BF8B-CA7501FEC19A}
! //static const IID_IGMEOLEApp =
! //{ 0x81191a44, 0xb898, 0x4143, { 0xbf, 0x8b, 0xca, 0x75, 0x1, 0xfe, 0xc1, 0x9a } };
!
BEGIN_INTERFACE_MAP(CGMEOLEApp, CCmdTarget)
! INTERFACE_PART(CGMEOLEApp, IID_IGMEOLEApp, Dual)
! DUAL_ERRORINFO_PART(CGMEOLEApp)
END_INTERFACE_MAP()
! // {C7DCCC2E-1642-4a40-8060-51A7B9FAE488}
! IMPLEMENT_OLESINGLECREATE(CGMEOLEApp, "GME.Application", 0xC7DCCC2E, 0x1642, 0x4a40, 0x80, 0x60, 0x51, 0xA7, 0xB9, 0xFA, 0xE4, 0x88)
/////////////////////////////////////////////////////////////////////////////
***************
*** 556,557 ****
--- 576,1005 ----
SetNotSupported();
}
+
+ DELEGATE_DUAL_INTERFACE(CGMEOLEApp, Dual)
+
+ // Implement ISupportErrorInfo to indicate we support the
+ // OLE Automation error handler.
+ IMPLEMENT_DUAL_ERRORINFO(CGMEOLEApp, IID_IGMEOLEApp)
+
+ STDMETHODIMP CGMEOLEApp::XDual::put_Visible( VARIANT_BOOL isVisible)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->SetVisible(isVisible);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_Visible( VARIANT_BOOL* isVisible)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ #pragma warning(disable: 4310) // cast truncates constant value
+ *isVisible = (pThis->GetVisible() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_Version( BSTR* versionStr)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ CString str = pThis->GetVersion();
+ str.SetSysString(versionStr);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_VersionMajor( short* n)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ *n = pThis->GetVersionMajor();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_VersionMinor( short* n)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ *n = pThis->GetVersionMinor();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_VersionPatchLevel( short* n)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ *n = pThis->GetVersionPatchLevel();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_Models( IGMEOLEColl** coll)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ LPDISPATCH lpDisp = pThis->GetModels();
+ lpDisp->QueryInterface(IID_IGMEOLEColl, (LPVOID*)coll);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_MgaProject( IMgaProject** project)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ LPDISPATCH lpDisp = pThis->GetMgaProject();
+ lpDisp->QueryInterface(IID_IMgaProject, (LPVOID*)project);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::get_Panels( IGMEOLEColl** coll)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ LPDISPATCH lpDisp = pThis->GetPanels();
+ lpDisp->QueryInterface(IID_IGMEOLEColl, (LPVOID*)coll);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::CreateProject( BSTR metaname, BSTR connstr)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->CreateProject(CString(metaname), CString(connstr));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::OpenProject( BSTR connstr)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->OpenProject(CString(connstr));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::CreateProjectDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->CreateProjectDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::OpenProjectDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->OpenProjectDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::CloseProject( VARIANT_BOOL saveOnClose)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->CloseProject(saveOnClose);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::SaveProject()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->SaveProject();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::SaveProjectAs( BSTR connstr)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->SaveProjectAs(CString(connstr));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::SaveProjectAsDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->SaveProjectAsDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::ExportProject( BSTR connstr)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ExportProject(CString(connstr));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::ImportProject( BSTR connstr)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ImportProject(CString(connstr));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEApp::XDual::ConstraintsDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ConstraintsDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::CheckAllConstraints()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->CheckAllConstraints();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::RegisterParagimsDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->RegisterParagimsDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::RegisterComponentsDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->RegisterComponentsDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::RunComponent( BSTR progID)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->RunComponent(CString(progID));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::RunComponentDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->RunComponentDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::SettingsDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->SettingsDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::Undo()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->Undo();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::Redo()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->Redo();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::ClearUndoQueue()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ClearUndoQueue();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::ProjectPropertiesDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ProjectPropertiesDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::ShowHelpContents()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ShowHelpContents();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::ShowAbout()
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ pThis->ShowAbout();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEApp::XDual::ShowFCO( IMgaFCO* mgaFCO)
+ {
+ METHOD_PROLOGUE(CGMEOLEApp, Dual)
+
+ TRY_DUAL(IID_IGMEOLEApp)
+ {
+ LPDISPATCH lpDisp = NULL;
+ mgaFCO->QueryInterface(IID_IDispatch, (LPVOID*)&lpDisp);
+ pThis->ShowFCO(lpDisp);
+ lpDisp->Release();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
Index: GMEOLEApp.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEApp.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** GMEOLEApp.h 17 Dec 2003 13:45:02 -0000 1.1
--- GMEOLEApp.h 22 Jul 2004 14:05:36 -0000 1.2
***************
*** 9,12 ****
--- 9,32 ----
+ class CSingletonFactory: public COleObjectFactory
+ {
+ public:
+ CSingletonFactory(REFCLSID clsid, CRuntimeClass* pRuntimeClass,
+ BOOL bMultiInstance, LPCTSTR lpszProgID);
+ virtual CCmdTarget* OnCreateObject();
+ private:
+ CCmdTarget* singleton;
+ };
+
+ #define DECLARE_OLESINGLECREATE(class_name) \
+ public: \
+ static AFX_DATA CSingletonFactory factory; \
+ static AFX_DATA const GUID guid; \
+
+ #define IMPLEMENT_OLESINGLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ AFX_DATADEF CSingletonFactory class_name::factory(class_name::guid, \
+ RUNTIME_CLASS(class_name), FALSE, _T(external_name)); \
+ AFX_COMDAT const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
/////////////////////////////////////////////////////////////////////////////
***************
*** 26,34 ****
// Overrides
! // ClassWizard generated virtual function overrides
! //{{AFX_VIRTUAL(CGMEOLEApp)
! public:
virtual void OnFinalRelease();
! //}}AFX_VIRTUAL
// Implementation
--- 46,52 ----
// Overrides
! public:
virtual void OnFinalRelease();
!
// Implementation
***************
*** 42,49 ****
DECLARE_MESSAGE_MAP()
! DECLARE_OLECREATE(CGMEOLEApp)
! // Generated OLE dispatch map functions
! //{{AFX_DISPATCH(CGMEOLEApp)
afx_msg BOOL GetVisible();
afx_msg void SetVisible(BOOL bNewValue);
--- 60,66 ----
DECLARE_MESSAGE_MAP()
! DECLARE_OLESINGLECREATE(CGMEOLEApp)
! // OLE dispatch map functions
afx_msg BOOL GetVisible();
afx_msg void SetVisible(BOOL bNewValue);
***************
*** 86,92 ****
afx_msg void ShowAbout();
afx_msg void ShowFCO(LPDISPATCH mgaFCO);
! //}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};
--- 103,151 ----
afx_msg void ShowAbout();
afx_msg void ShowFCO(LPDISPATCH mgaFCO);
!
!
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
+
+ BEGIN_DUAL_INTERFACE_PART(Dual, IGMEOLEApp)
+ STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL isVisible);
+ STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL* isVisible);
+ STDMETHOD(get_Version)(THIS_ BSTR* versionStr);
+ STDMETHOD(get_VersionMajor)(THIS_ short* n);
+ STDMETHOD(get_VersionMinor)(THIS_ short* n);
+ STDMETHOD(get_VersionPatchLevel)(THIS_ short* n);
+ STDMETHOD(get_Models)(THIS_ IGMEOLEColl** coll);
+ STDMETHOD(get_MgaProject)(THIS_ IMgaProject** project);
+ STDMETHOD(get_Panels)(THIS_ IGMEOLEColl** coll);
+
+ STDMETHOD(CreateProject)(THIS_ BSTR metaname, BSTR connstr);
+ STDMETHOD(OpenProject)(THIS_ BSTR connstr);
+ STDMETHOD(CreateProjectDialog)(THIS);
+ STDMETHOD(OpenProjectDialog)(THIS);
+ STDMETHOD(CloseProject)(THIS_ VARIANT_BOOL saveOnClose);
+ STDMETHOD(SaveProject)(THIS);
+ STDMETHOD(SaveProjectAs)(THIS_ BSTR connstr);
+ STDMETHOD(SaveProjectAsDialog)(THIS);
+ STDMETHOD(ExportProject)(THIS_ BSTR connstr);
+ STDMETHOD(ImportProject)(THIS_ BSTR connstr);
+ STDMETHOD(ConstraintsDialog)(THIS);
+ STDMETHOD(CheckAllConstraints)(THIS);
+ STDMETHOD(RegisterParagimsDialog)(THIS);
+ STDMETHOD(RegisterComponentsDialog)(THIS);
+ STDMETHOD(RunComponent)(THIS_ BSTR progID);
+ STDMETHOD(RunComponentDialog)(THIS);
+ STDMETHOD(SettingsDialog)(THIS);
+ STDMETHOD(Undo)(THIS);
+ STDMETHOD(Redo)(THIS);
+ STDMETHOD(ClearUndoQueue)(THIS);
+ STDMETHOD(ProjectPropertiesDialog)(THIS);
+ STDMETHOD(ShowHelpContents)(THIS);
+ STDMETHOD(ShowAbout)(THIS);
+ STDMETHOD(ShowFCO)(THIS_ IMgaFCO* mgaFCO);
+ END_DUAL_INTERFACE_PART(Dual)
+
+ // add declaration of ISupportErrorInfo implementation
+ // to indicate we support the OLE Automation error object
+ DECLARE_DUAL_ERRORINFO()
};
Index: GMEOLEAspect.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEAspect.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEOLEAspect.cpp 21 Jan 2004 15:08:49 -0000 1.2
--- GMEOLEAspect.cpp 22 Jul 2004 14:05:36 -0000 1.3
***************
*** 84,93 ****
// dispinterface in the .ODL file.
! // {17C67C9B-EB0E-4B86-BC11-C0D4D55A9C8B}
! static const IID IID_IGMEOLEAspect =
! { 0x17c67c9b, 0xeb0e, 0x4b86, { 0xbc, 0x11, 0xc0, 0xd4, 0xd5, 0x5a, 0x9c, 0x8b } };
BEGIN_INTERFACE_MAP(CGMEOLEAspect, CCmdTarget)
! INTERFACE_PART(CGMEOLEAspect, IID_IGMEOLEAspect, Dispatch)
END_INTERFACE_MAP()
--- 84,95 ----
// dispinterface in the .ODL file.
! // {EDEEB1F8-BC44-40d2-BE91-83E8CCD59845}
! //static const IID IID_IGMEOLEAspect =
! //{ 0xedeeb1f8, 0xbc44, 0x40d2, { 0xbe, 0x91, 0x83, 0xe8, 0xcc, 0xd5, 0x98, 0x45 } };
!
BEGIN_INTERFACE_MAP(CGMEOLEAspect, CCmdTarget)
! INTERFACE_PART(CGMEOLEAspect, IID_IGMEOLEAspect, Dual)
! DUAL_ERRORINFO_PART(CGMEOLEAspect)
END_INTERFACE_MAP()
***************
*** 147,149 ****
--- 149,210 ----
SetNotSupported();
+ }
+
+ DELEGATE_DUAL_INTERFACE(CGMEOLEAspect, Dual)
+
+ // Implement ISupportErrorInfo to indicate we support the
+ // OLE Automation error handler.
+ IMPLEMENT_DUAL_ERRORINFO(CGMEOLEAspect, IID_IGMEOLEAspect)
+
+ STDMETHODIMP CGMEOLEAspect::XDual::get_MgaAspect(IMgaMetaAspect** aspect)
+ {
+ METHOD_PROLOGUE(CGMEOLEAspect, Dual)
+
+ TRY_DUAL(IID_IGMEOLEAspect)
+ {
+ LPDISPATCH lpDisp = pThis->GetMgaAspect();
+ lpDisp->QueryInterface(IID_IMgaMetaAspect, (LPVOID*)aspect);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEAspect::XDual::put_Active(VARIANT_BOOL isActive)
+ {
+ METHOD_PROLOGUE(CGMEOLEAspect, Dual)
+
+ TRY_DUAL(IID_IGMEOLEAspect)
+ {
+ pThis->SetActive(isActive);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEAspect::XDual::get_Active(VARIANT_BOOL* isActive)
+ {
+ METHOD_PROLOGUE(CGMEOLEAspect, Dual)
+
+ TRY_DUAL(IID_IGMEOLEAspect)
+ {
+ #pragma warning(disable: 4310) // cast truncates constant value
+ *isActive = (pThis->GetActive() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEAspect::XDual::get_Valid(VARIANT_BOOL* isValid)
+ {
+ METHOD_PROLOGUE(CGMEOLEAspect, Dual)
+
+ TRY_DUAL(IID_IGMEOLEAspect)
+ {
+ #pragma warning(disable: 4310) // cast truncates constant value
+ *isValid = (pThis->GetValid() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
}
Index: GMEOLEAspect.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEAspect.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** GMEOLEAspect.h 17 Dec 2003 13:45:02 -0000 1.1
--- GMEOLEAspect.h 22 Jul 2004 14:05:36 -0000 1.2
***************
*** 28,35 ****
public:
void SetGuiParams(CGMEView *view, CGuiMetaAspect *guiAspect) { m_view = view; m_guiAspect = guiAspect; }
// Overrides
! // ClassWizard generated virtual function overrides
! //{{AFX_VIRTUAL(CGMEOLEAspect)
! public:
virtual void OnFinalRelease();
//}}AFX_VIRTUAL
--- 28,34 ----
public:
void SetGuiParams(CGMEView *view, CGuiMetaAspect *guiAspect) { m_view = view; m_guiAspect = guiAspect; }
+
// Overrides
! public:
virtual void OnFinalRelease();
//}}AFX_VIRTUAL
***************
*** 49,54 ****
DECLARE_MESSAGE_MAP()
! // Generated OLE dispatch map functions
! //{{AFX_DISPATCH(CGMEOLEAspect)
afx_msg LPDISPATCH GetMgaAspect();
afx_msg void SetMgaAspect(LPDISPATCH newValue);
--- 48,52 ----
DECLARE_MESSAGE_MAP()
! // OLE dispatch map functions
afx_msg LPDISPATCH GetMgaAspect();
afx_msg void SetMgaAspect(LPDISPATCH newValue);
***************
*** 57,63 ****
afx_msg BOOL GetValid();
afx_msg void SetValid(BOOL bNewValue);
! //}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};
--- 55,72 ----
afx_msg BOOL GetValid();
afx_msg void SetValid(BOOL bNewValue);
!
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
+
+ BEGIN_DUAL_INTERFACE_PART(Dual, IGMEOLEAspect)
+ STDMETHOD(get_MgaAspect)(THIS_ IMgaMetaAspect** aspect);
+ STDMETHOD(put_Active)(THIS_ VARIANT_BOOL isActive);
+ STDMETHOD(get_Active)(THIS_ VARIANT_BOOL* isActive);
+ STDMETHOD(get_Valid)(THIS_ VARIANT_BOOL* isValid);
+ END_DUAL_INTERFACE_PART(Dual)
+
+ // add declaration of ISupportErrorInfo implementation
+ // to indicate we support the OLE Automation error object
+ DECLARE_DUAL_ERRORINFO()
};
Index: GMEOLEColl.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEColl.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEOLEColl.cpp 18 Dec 2003 13:28:41 -0000 1.2
--- GMEOLEColl.cpp 22 Jul 2004 14:05:36 -0000 1.3
***************
*** 57,63 ****
//{{AFX_DISPATCH_MAP(CGMEOLEColl)
DISP_PROPERTY_EX(CGMEOLEColl, "Count", GetCount, SetNotSupported, VT_I4)
! DISP_FUNCTION(CGMEOLEColl, "Add", Add, VT_I4, VTS_DISPATCH)
DISP_FUNCTION(CGMEOLEColl, "Find", Find, VT_I4, VTS_DISPATCH)
! DISP_FUNCTION(CGMEOLEColl, "Remove", Remove, VT_I4, VTS_VARIANT)
DISP_FUNCTION(CGMEOLEColl, "RemoveAll", RemoveAll, VT_EMPTY, VTS_NONE)
DISP_PROPERTY_PARAM(CGMEOLEColl, "Item", GetItem, SetItem, VT_DISPATCH, VTS_I4)
--- 57,63 ----
//{{AFX_DISPATCH_MAP(CGMEOLEColl)
DISP_PROPERTY_EX(CGMEOLEColl, "Count", GetCount, SetNotSupported, VT_I4)
! DISP_FUNCTION(CGMEOLEColl, "Add", Add, VT_EMPTY, VTS_DISPATCH)
DISP_FUNCTION(CGMEOLEColl, "Find", Find, VT_I4, VTS_DISPATCH)
! DISP_FUNCTION(CGMEOLEColl, "Remove", Remove, VT_EMPTY, VTS_VARIANT)
DISP_FUNCTION(CGMEOLEColl, "RemoveAll", RemoveAll, VT_EMPTY, VTS_NONE)
DISP_PROPERTY_PARAM(CGMEOLEColl, "Item", GetItem, SetItem, VT_DISPATCH, VTS_I4)
***************
*** 67,74 ****
END_DISPATCH_MAP()
- // {8CF6108F-F558-4536-8C26-65EE58218D98}
- static const IID IID_IGMEOLEColl = { 0x8cf6108f, 0xf558, 0x4536,
- { 0x8c, 0x26, 0x65, 0xee, 0x58, 0x21, 0x8d, 0x98 } };
--- 67,74 ----
END_DISPATCH_MAP()
+ // {36C7B797-6BDE-46d0-8870-70189000EDF9}
+ //static const IID IID_IGMEOLEColl =
+ //{ 0x36c7b797, 0x6bde, 0x46d0, { 0x88, 0x70, 0x70, 0x18, 0x90, 0x0, 0xed, 0xf9 } };
***************
*** 78,82 ****
BEGIN_INTERFACE_MAP(CGMEOLEColl, CCmdTarget)
! INTERFACE_PART(CGMEOLEColl, IID_IGMEOLEColl, Dispatch)
END_INTERFACE_MAP()
--- 78,83 ----
BEGIN_INTERFACE_MAP(CGMEOLEColl, CCmdTarget)
! INTERFACE_PART(CGMEOLEColl, IID_IGMEOLEColl, Dual)
! DUAL_ERRORINFO_PART(CGMEOLEColl)
END_INTERFACE_MAP()
***************
*** 142,150 ****
}
! long CGMEOLEColl::Add(LPDISPATCH newValue)
{
m_ptrArray.Add(newValue);
newValue->AddRef();
- return m_ptrArray.GetSize();
}
--- 143,150 ----
}
! void CGMEOLEColl::Add(LPDISPATCH newValue)
{
m_ptrArray.Add(newValue);
newValue->AddRef();
}
***************
*** 160,164 ****
}
! long CGMEOLEColl::Remove(const VARIANT FAR& removeValue)
{
int nIndex = -1;
--- 160,164 ----
}
! void CGMEOLEColl::Remove(const VARIANT FAR& removeValue)
{
int nIndex = -1;
***************
*** 188,192 ****
m_ptrArray.RemoveAt(nIndex);
- return m_ptrArray.GetSize();
}
--- 188,191 ----
***************
*** 200,202 ****
--- 199,305 ----
}
m_ptrArray.RemoveAll();
+ }
+
+
+ DELEGATE_DUAL_INTERFACE(CGMEOLEColl, Dual)
+
+ // Implement ISupportErrorInfo to indicate we support the
+ // OLE Automation error handler.
+ IMPLEMENT_DUAL_ERRORINFO(CGMEOLEColl, IID_IGMEOLEColl)
+
+
+ STDMETHODIMP CGMEOLEColl::XDual::get_Count(long *cnt)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ *cnt = pThis->GetCount();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::Add(IDispatch* newValue)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ pThis->Add(newValue);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::Find(IDispatch* findValue, long *cnt)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ *cnt = pThis->Find(findValue);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::Remove(VARIANT removeValue)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ pThis->Remove(removeValue);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::RemoveAll()
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ pThis->RemoveAll();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::get_Item(long nIndex, IDispatch** val)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ *val = pThis->GetItem(nIndex);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::put_Item(long nIndex, IDispatch* newValue)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ pThis->SetItem(nIndex, newValue);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEColl::XDual::get__NewEnum(IUnknown** e)
+ {
+ METHOD_PROLOGUE(CGMEOLEColl, Dual)
+
+ TRY_DUAL(IID_IGMEOLEColl)
+ {
+ *e = pThis->GetNewEnum();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
}
Index: GMEOLEColl.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEColl.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEOLEColl.h 18 Dec 2003 13:28:41 -0000 1.2
--- GMEOLEColl.h 22 Jul 2004 14:05:36 -0000 1.3
***************
*** 20,39 ****
// Overrides
! // ClassWizard generated virtual function overrides
! //{{AFX_VIRTUAL(CStringCollect)
! public:
virtual void OnFinalRelease();
- //}}AFX_VIRTUAL
! // Generated OLE dispatch map functions
! //{{AFX_DISPATCH(CGMEOLEColl)
afx_msg long GetCount();
! afx_msg long Add(LPDISPATCH newValue);
afx_msg long Find(LPDISPATCH findValue);
! afx_msg long Remove(const VARIANT FAR& removeValue);
afx_msg void RemoveAll();
afx_msg LPDISPATCH GetItem(long nIndex);
afx_msg void SetItem(long nIndex, LPDISPATCH newValue);
! //}}AFX_DISPATCH
// Implementation
--- 20,37 ----
// Overrides
! public:
virtual void OnFinalRelease();
!
! // OLE dispatch map functions
afx_msg long GetCount();
! afx_msg void Add(LPDISPATCH newValue);
afx_msg long Find(LPDISPATCH findValue);
! afx_msg void Remove(const VARIANT FAR& removeValue);
afx_msg void RemoveAll();
afx_msg LPDISPATCH GetItem(long nIndex);
afx_msg void SetItem(long nIndex, LPDISPATCH newValue);
! afx_msg LPUNKNOWN GetNewEnum();
!
// Implementation
***************
*** 48,56 ****
DECLARE_MESSAGE_MAP()
- afx_msg LPUNKNOWN GetNewEnum();
-
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};
--- 46,69 ----
DECLARE_MESSAGE_MAP()
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
+
+ BEGIN_DUAL_INTERFACE_PART(Dual, IGMEOLEColl)
+ STDMETHOD(get_Count)(THIS_ long *cnt);
+
+ STDMETHOD(Add)(THIS_ IDispatch* newValue);
+ STDMETHOD(Find)(THIS_ IDispatch* findValue, long *cnt);
+ STDMETHOD(Remove)(THIS_ VARIANT removeValue);
+ STDMETHOD(RemoveAll)(THIS);
+
+ STDMETHOD(get_Item)(THIS_ long nIndex, IDispatch** val);
+ STDMETHOD(put_Item)(THIS_ long nIndex, IDispatch* newValue);
+ STDMETHOD(get__NewEnum)(THIS_ IUnknown** e);
+ END_DUAL_INTERFACE_PART(Dual)
+
+ // add declaration of ISupportErrorInfo implementation
+ // to indicate we support the OLE Automation error object
+ DECLARE_DUAL_ERRORINFO()
};
Index: GMEOLEModel.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEModel.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** GMEOLEModel.cpp 12 Mar 2004 15:41:54 -0000 1.5
--- GMEOLEModel.cpp 22 Jul 2004 14:05:36 -0000 1.6
***************
*** 89,98 ****
// dispinterface in the .ODL file.
! // {FCDF5F10-668F-44B0-9C7A-2A63197D57BA}
! static const IID IID_IGMEOLEModel =
! { 0xfcdf5f10, 0x668f, 0x44b0, { 0x9c, 0x7a, 0x2a, 0x63, 0x19, 0x7d, 0x57, 0xba } };
BEGIN_INTERFACE_MAP(CGMEOLEModel, CCmdTarget)
! INTERFACE_PART(CGMEOLEModel, IID_IGMEOLEModel, Dispatch)
END_INTERFACE_MAP()
--- 89,100 ----
// dispinterface in the .ODL file.
! // {399A16A0-D209-4d00-9BDF-858D87EC4641}
! //static const IID IID_IGMEOLEModel =
! //{ 0x399a16a0, 0xd209, 0x4d00, { 0x9b, 0xdf, 0x85, 0x8d, 0x87, 0xec, 0x46, 0x41 } };
!
BEGIN_INTERFACE_MAP(CGMEOLEModel, CCmdTarget)
! INTERFACE_PART(CGMEOLEModel, IID_IGMEOLEModel, Dual)
! DUAL_ERRORINFO_PART(CGMEOLEModel)
END_INTERFACE_MAP()
***************
*** 304,305 ****
--- 306,500 ----
m_view->Invalidate();
}
+
+ DELEGATE_DUAL_INTERFACE(CGMEOLEModel, Dual)
+
+ // Implement ISupportErrorInfo to indicate we support the
+ // OLE Automation error handler.
+ IMPLEMENT_DUAL_ERRORINFO(CGMEOLEModel, IID_IGMEOLEModel)
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::put_Active(VARIANT_BOOL isActive)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->SetActive(isActive);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEModel::XDual::get_Active(VARIANT_BOOL* isActive)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ #pragma warning(disable: 4310) // cast truncates constant value
+ *isActive = (pThis->GetActive() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEModel::XDual::get_Aspects(IGMEOLEColl** coll)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ LPDISPATCH lpDisp = pThis->GetAspects();
+ lpDisp->QueryInterface(IID_IGMEOLEColl, (LPVOID*)coll);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEModel::XDual::get_MgaModel(IMgaModel** model)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ LPDISPATCH lpDisp = pThis->GetMgaModel();
+ lpDisp->QueryInterface(IID_IMgaModel, (LPVOID*)model);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEModel::XDual::get_Valid(VARIANT_BOOL* isValid)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ #pragma warning(disable: 4310) // cast truncates constant value
+ *isValid = (pThis->GetValid() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEModel::XDual::Print()
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->Print();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+ STDMETHODIMP CGMEOLEModel::XDual::PrintDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->PrintDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::DumpWindowsMetaFile(BSTR filePath)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->DumpWindowsMetaFile(CString(filePath));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::CheckConstraints()
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->CheckConstraints();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::RunComponent(BSTR appID)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->RunComponent(CString(appID));
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::RunComponentDialog()
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->RunComponentDialog();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::Close()
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->Close();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::GrayOutFCO(VARIANT_BOOL bGray, VARIANT_BOOL bNeighbours, IMgaFCOs* mgaFCO)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ LPDISPATCH lpDisp = NULL;
+ mgaFCO->QueryInterface(IID_IDispatch, (LPVOID*)&lpDisp);
+ pThis->GrayOutFCO(bGray, bNeighbours, lpDisp);
+ lpDisp->Release();
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEModel::XDual::GrayOutAll(VARIANT_BOOL bGray)
+ {
+ METHOD_PROLOGUE(CGMEOLEModel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEModel)
+ {
+ pThis->GrayOutAll(bGray);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
Index: GMEOLEModel.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEModel.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEOLEModel.h 25 Jan 2004 17:31:45 -0000 1.2
--- GMEOLEModel.h 22 Jul 2004 14:05:36 -0000 1.3
***************
*** 31,39 ****
// Overrides
! // ClassWizard generated virtual function overrides
! //{{AFX_VIRTUAL(CGMEOLEModel)
! public:
virtual void OnFinalRelease();
- //}}AFX_VIRTUAL
// Implementation
--- 31,36 ----
// Overrides
! public:
virtual void OnFinalRelease();
// Implementation
***************
*** 50,55 ****
DECLARE_MESSAGE_MAP()
! // Generated OLE dispatch map functions
! //{{AFX_DISPATCH(CGMEOLEModel)
afx_msg BOOL GetActive();
afx_msg void SetActive(BOOL bNewValue);
--- 47,51 ----
DECLARE_MESSAGE_MAP()
! // OLE dispatch map functions
afx_msg BOOL GetActive();
afx_msg void SetActive(BOOL bNewValue);
***************
*** 69,75 ****
afx_msg void GrayOutFCO(BOOL bGray, BOOL bNeighbours, LPDISPATCH mgaFCO);
afx_msg void GrayOutAll(BOOL bGray);
! //}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};
--- 65,94 ----
afx_msg void GrayOutFCO(BOOL bGray, BOOL bNeighbours, LPDISPATCH mgaFCO);
afx_msg void GrayOutAll(BOOL bGray);
!
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
+
+ BEGIN_DUAL_INTERFACE_PART(Dual, IGMEOLEModel)
+ STDMETHOD(put_Active)(THIS_ VARIANT_BOOL isActive);
+ STDMETHOD(get_Active)(THIS_ VARIANT_BOOL* isActive);
+ STDMETHOD(get_Aspects)(THIS_ IGMEOLEColl** coll);
+ STDMETHOD(get_MgaModel)(THIS_ IMgaModel** model);
+ STDMETHOD(get_Valid)(THIS_ VARIANT_BOOL* isValid);
+
+ STDMETHOD(Print)(THIS);
+ STDMETHOD(PrintDialog)(THIS);
+ STDMETHOD(DumpWindowsMetaFile)(THIS_ BSTR filePath);
+ STDMETHOD(CheckConstraints)(THIS);
+ STDMETHOD(RunComponent)(THIS_ BSTR appID);
+ STDMETHOD(RunComponentDialog)(THIS);
+ STDMETHOD(Close)(THIS);
+ STDMETHOD(GrayOutFCO)(THIS_ VARIANT_BOOL bGray, VARIANT_BOOL bNeighbours, IMgaFCOs* mgaFCO);
+ STDMETHOD(GrayOutAll)(THIS_ VARIANT_BOOL bGray);
+ END_DUAL_INTERFACE_PART(Dual)
+
+
+ // add declaration of ISupportErrorInfo implementation
+ // to indicate we support the OLE Automation error object
+ DECLARE_DUAL_ERRORINFO()
};
Index: GMEOLEPanel.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEPanel.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEOLEPanel.cpp 21 Jan 2004 16:00:11 -0000 1.2
--- GMEOLEPanel.cpp 22 Jul 2004 14:05:36 -0000 1.3
***************
*** 60,69 ****
// dispinterface in the .ODL file.
! // {8EA9AE85-8787-4F5C-B5F6-1E0F78EE4E0B}
! static const IID IID_IGMEOLEPanel =
! { 0x8ea9ae85, 0x8787, 0x4f5c, { 0xb5, 0xf6, 0x1e, 0xf, 0x78, 0xee, 0x4e, 0xb } };
BEGIN_INTERFACE_MAP(CGMEOLEPanel, CCmdTarget)
! INTERFACE_PART(CGMEOLEPanel, IID_IGMEOLEPanel, Dispatch)
END_INTERFACE_MAP()
--- 60,71 ----
// dispinterface in the .ODL file.
! // {C047FAEB-7AE7-40fb-8C5C-90C73DAD4BC6}
! //static const GUID <<name>> =
! //{ 0xc047faeb, 0x7ae7, 0x40fb, { 0x8c, 0x5c, 0x90, 0xc7, 0x3d, 0xad, 0x4b, 0xc6 } };
!
BEGIN_INTERFACE_MAP(CGMEOLEPanel, CCmdTarget)
! INTERFACE_PART(CGMEOLEPanel, IID_IGMEOLEPanel, Dual)
! DUAL_ERRORINFO_PART(CGMEOLEPanel)
END_INTERFACE_MAP()
***************
*** 105,106 ****
--- 107,156 ----
}
+
+ DELEGATE_DUAL_INTERFACE(CGMEOLEPanel, Dual)
+
+ // Implement ISupportErrorInfo to indicate we support the
+ // OLE Automation error handler.
+ IMPLEMENT_DUAL_ERRORINFO(CGMEOLEPanel, IID_IGMEOLEAspect)
+
+
+ STDMETHODIMP CGMEOLEPanel::XDual::get_Name(BSTR* name)
+ {
+ METHOD_PROLOGUE(CGMEOLEPanel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEPanel)
+ {
+ CString str = pThis->GetName();
+ str.SetSysString(name);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEPanel::XDual::put_Visible(VARIANT_BOOL isVisible)
+ {
+ METHOD_PROLOGUE(CGMEOLEPanel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEPanel)
+ {
+ pThis->SetVisible(isVisible);
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
+
+
+ STDMETHODIMP CGMEOLEPanel::XDual::get_Visible(VARIANT_BOOL* isVisible)
+ {
+ METHOD_PROLOGUE(CGMEOLEPanel, Dual)
+
+ TRY_DUAL(IID_IGMEOLEPanel)
+ {
+ #pragma warning(disable: 4310) // cast truncates constant value
+ *isVisible = (pThis->GetVisible() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ return NOERROR;
+ }
+ CATCH_ALL_DUAL
+ }
\ No newline at end of file
Index: GMEOLEPanel.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEPanel.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** GMEOLEPanel.h 17 Dec 2003 13:45:02 -0000 1.1
--- GMEOLEPanel.h 22 Jul 2004 14:05:36 -0000 1.2
***************
*** 27,35 ****
// Overrides
! // ClassWizard generated virtual function overrides
! //{{AFX_VIRTUAL(CGMEOLEPanel)
! public:
virtual void OnFinalRelease();
- //}}AFX_VIRTUAL
// Implementation
--- 27,32 ----
// Overrides
! public:
virtual void OnFinalRelease();
// Implementation
***************
*** 46,58 ****
DECLARE_MESSAGE_MAP()
! // Generated OLE dispatch map functions
! //{{AFX_DISPATCH(CGMEOLEPanel)
afx_msg BSTR GetName();
afx_msg void SetName(LPCTSTR lpszNewValue);
afx_msg BOOL GetVisible();
afx_msg void SetVisible(BOOL bNewValue);
! //}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};
--- 43,64 ----
DECLARE_MESSAGE_MAP()
! // OLE dispatch map functions
afx_msg BSTR GetName();
afx_msg void SetName(LPCTSTR lpszNewValue);
afx_msg BOOL GetVisible();
afx_msg void SetVisible(BOOL bNewValue);
!
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
+
+ BEGIN_DUAL_INTERFACE_PART(Dual, IGMEOLEPanel)
+ STDMETHOD(get_Name)(THIS_ BSTR* name);
+ STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL isVisible);
+ STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL* isVisible);
+ END_DUAL_INTERFACE_PART(Dual)
+
+ // add declaration of ISupportErrorInfo implementation
+ // to indicate we support the OLE Automation error object
+ DECLARE_DUAL_ERRORINFO()
};
Index: GMEView.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEView.cpp,v
retrieving revision 1.152
retrieving revision 1.153
diff -C2 -d -r1.152 -r1.153
*** GMEView.cpp 19 Jul 2004 17:19:29 -0000 1.152
--- GMEView.cpp 22 Jul 2004 14:05:36 -0000 1.153
***************
*** 10,14 ****
#include "GMEstd.h"
- #include "GMEAppi.h"
#include "GuiMeta.h"
#include "GMEDoc.h"
--- 10,13 ----
Index: GmeLib.idl
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GmeLib.idl,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** GmeLib.idl 18 Dec 2003 10:10:59 -0000 1.7
--- GmeLib.idl 22 Jul 2004 14:05:36 -0000 1.8
***************
*** 5,9 ****
import "Mga.idl";
import "Gme.idl";
- import "Gme.odl";
// --------------------------- Meta Library
--- 5,8 ----
***************
*** 12,18 ****
uuid(0ADEEC71-D83A-11D3-B36B-005004CC8592),
version(1.0),
! helpstring("MGA GME Type Library")
]
! library GmeLib
{
importlib("stdole32.tlb");
--- 11,17 ----
uuid(0ADEEC71-D83A-11D3-B36B-005004CC8592),
version(1.0),
! helpstring("GME Type Library")
]
! library GMELib
{
importlib("stdole32.tlb");
***************
*** 21,69 ****
// Class information for CGMEOLEApp
! [ uuid(013F78DC-2435-4086-B3CF-63D402DD7141) ]
coclass Application
{
! [default] dispinterface IGMEOLEApp;
[source] interface IMgaComponent;
[source] interface IMgaComponentEx;
interface IMgaVersionInfo;
! };
!
! // Class information for Model collections
! [ uuid(FD76B7F0-F657-4412-BF25-8B8C38471F0B) ]
! coclass Models
! {
! [default] dispinterface IGMEOLEColl;
};
// Class information for CGMEOLEModel
! [ uuid(2B8F0357-C394-45E6-BD0E-214398CD199D) ]
coclass Model
{
! [default] dispinterface IGMEOLEModel;
! };
!
! // Class information for Aspect collections
! [ uuid(C1C36C3E-05A6-45e7-8136-E49940E69D18) ]
! coclass Aspects
! {
! [default] dispinterface IGMEOLEColl;
};
! // Class information for CGMEOLEAspect
! [ uuid(BB39B12A-B053-471F-8894-CABE694DAA2C) ]
coclass Aspect
{
! [default] dispinterface IGMEOLEAspect;
! };
!
!
! // Class information for Aspect collections
! [ uuid(2E996484-0148-4cd5-A710-A62B6BA04D36) ]
! coclass Panels
! {
! [default] dispinterface IGMEOLEColl;
};
--- 20,49 ----
// Class information for CGMEOLEApp
! [ uuid(C7DCCC2E-1642-4a40-8060-51A7B9FAE488) ]
coclass Application
{
! [default] interface IGMEOLEApp;
[source] interface IMgaComponent;
[source] interface IMgaComponentEx;
interface IMgaVersionInfo;
! interface ISupportErrorInfo;
};
// Class information for CGMEOLEModel
! [ uuid(7B512D6A-6767-4e3f-BF1F-A22943E68C32) ]
coclass Model
{
! [default] interface IGMEOLEModel;
! interface ISupportErrorInfo;
};
! // Class information for CGMEOLEAspect
! [ uuid(D4AFDD5A-037A-42d5-A9A1-F44C81EA7AF7) ]
coclass Aspect
{
! [default] interface IGMEOLEAspect;
! interface ISupportErrorInfo;
};
***************
*** 71,81 ****
// Class information for CGMEOLEPanel
! [ uuid(56F7B6E8-192F-4812-969A-7D607F3F7E1D) ]
coclass Panel
{
! [default] dispinterface IGMEOLEPanel;
};
!
};
--- 51,68 ----
// Class information for CGMEOLEPanel
! [ uuid(A946466F-29E2-44a6-A69A-4D6D9268A37F) ]
coclass Panel
{
! [default] interface IGMEOLEPanel;
! interface ISupportErrorInfo;
};
+ // Class information for CGMEOLEPanel
! [ uuid(05403CF4-5C53-49d4-8F63-ED37870ABF1F) ]
! coclass Collection
! {
! [default] interface IGMEOLEColl;
! interface ISupportErrorInfo;
! };
};
Index: ScrollZoomView.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/ScrollZoomView.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** ScrollZoomView.cpp 14 Jun 2004 20:32:46 -0000 1.15
--- ScrollZoomView.cpp 22 Jul 2004 14:05:36 -0000 1.16
***************
*** 11,15 ****
#include "GMEstd.h"
- #include "GMEAppi.h"
#include "GuiMeta.h"
#include "GMEDoc.h"
--- 11,14 ----
Index: StdAfx.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/StdAfx.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** StdAfx.h 17 May 2004 17:50:32 -0000 1.9
--- StdAfx.h 22 Jul 2004 14:05:36 -0000 1.10
***************
*** 18,21 ****
--- 18,22 ----
#include <afxodlgs.h> // MFC OLE dialog classes
#include <afxdisp.h> // MFC Automation classes
+ #include <afxctl.h> // Pick up the definition of AfxOleRegisterTypeLib
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
***************
*** 23,26 ****
--- 24,29 ----
#endif // _AFX_NO_AFXCMN_SUPPORT
+ #include "mfcdual.h"
+
#include <atlbase.h>
extern CComModule _Module;
***************
*** 32,36 ****
#include "..\Mga\MgaLib.h"
- #include "GMEAppi.h"
#include "CommonError.h"
--- 35,38 ----
--- GME.odl DELETED ---
More information about the GME-commit
mailing list