*.idl
-
geht es nicht das ich einfach eine variable deklarire?
-
Nö
-
kannst du mir vielleicht ein beispiel zeigen wie ich das realisieren kann.
-
interface IDokuV : IDispatch { [id(1), helpstring("method ShowDokuDlg")] HRESULT ShowDokuDlg(); [id(2), helpstring("method GetString")] HRESULT GetString( BSTR* returnedString); }; class ATL_NO_VTABLE CDokuV : ... { // ... HRESULT ShowDokuDlg() { m_String = "Das ist ein TestString"; return E_NOTIMPL; } CComBSTR m_String; HRESULT GetString( BSTR* returnedString) { return m_String.CopyTo( returnedString); } };
-
Danken erstmal. aber
ich musste den qelltext etwas änder, weil entweder outlook mekerte oder c++
und trotzdem kriege ich in outlook beim ausführen der zeilen
Dim d As DOKUVERWALTUNGLib.DokuV
Dim s As String
Set d = New DOKUVERWALTUNGLib.DokuV
d.ShowDokuDlg
d.GetString (s)
MsgBox s
Set d = Nothingden text "Das ist ein TestString" nicht zurück
/////////////////////////////////////////////////////////////////////////////
// CDokuVSTDMETHODIMP CDokuV::ShowDokuDlg()
{
m_String = "Das ist ein TestString";
return 0;
}STDMETHODIMP CDokuV::GetString(BSTR* returnedString)
{
return m_String.CopyTo( returnedString);
}// DokuV.h : Deklaration von CDokuV
#ifndef __DOKUV_H_
#define __DOKUV_H_#include "resource.h" // Hauptsymbole
#include "DokuVerwaltung1.h"/////////////////////////////////////////////////////////////////////////////
// CDokuV
class ATL_NO_VTABLE CDokuV :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CDokuV, &CLSID_DokuV>,
public IDispatchImpl<IDokuV, &IID_IDokuV, &LIBID_DOKUVERWALTUNGLib>
{
public:CDokuV()
{
}CComBSTR m_String;
DECLARE_REGISTRY_RESOURCEID(IDR_DOKUV)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CDokuV)
COM_INTERFACE_ENTRY(IDokuV)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()// IDokuV
public:
STDMETHOD(ShowDokuDlg)();
STDMETHOD(GetString)(BSTR* returnedString);
};#endif //__DOKUV_H_
-
versuch mal das Interface so:
interface IDokuV : IDispatch { [id(1), helpstring("method ShowDokuDlg")] HRESULT ShowDokuDlg(); [id(2), helpstring("method GetString")] HRESULT GetString( [out,retval] BSTR* returnedString); };
-
klappt trotzdem nicht.
-
Hm, habs mal im Makroeditor von VC getestet, bei mir geht's
Dim d As Object Dim s As String d = CreateObject("DOKUVERWALTUNGLib.DokuV") d.GetString( s) MsgBox( s)
-
ich hab es in vba von outlook ausprobiert. da kamm eine fehlermeldung: Objekterstellung durch Active-X Komponente nicht möglich bei der Zeile
'd =CreateObject("DOKUVERWALTUNGLib.DokuV")'
-
kannst Du das Projekt mal packen und mir zuschicken?