Click here to Skip to main content
15,906,106 members
Home / Discussions / COM
   

COM

 
GeneralRe: unhandle exception using CreateDispatch Pin
jmkhael1-Oct-03 5:17
jmkhael1-Oct-03 5:17 
GeneralRe: unhandle exception using CreateDispatch Pin
danielferre1-Oct-03 5:27
danielferre1-Oct-03 5:27 
GeneralPlease help on sending text data efficiently Pin
FearlessBurner25-Sep-03 3:06
FearlessBurner25-Sep-03 3:06 
GeneralRe: Please help on sending text data efficiently Pin
valikac25-Sep-03 6:18
valikac25-Sep-03 6:18 
GeneralRe: Please help on sending text data efficiently Pin
Steve S25-Sep-03 22:33
Steve S25-Sep-03 22:33 
GeneralRe: Please help on sending text data efficiently Pin
FearlessBurner2-Oct-03 12:11
FearlessBurner2-Oct-03 12:11 
GeneralNew transaction cannot enlist( critical error) Pin
akshya25-Sep-03 2:28
akshya25-Sep-03 2:28 
GeneralProblem - Value not excepted Pin
Daniel Strigl25-Sep-03 1:14
Daniel Strigl25-Sep-03 1:14 
Hi guys!

I have a problem with my ActiveX component, that i developed (with VS.NET, ATL7, C++)!
I created a ActiveX component with one property "FileName", who's a BSTR.
I have included my ActiveX component in a Visual Basic sample. The property "FileName"
is visible in the object property viewer and I can change his value! That's fine!
But when I start my Visual Basic sample, the ActiveX component will use the old
standard value of "FileName" and not the value I have changed during the design time!
Is this normal? How can I fix it?

Here is a little of my source code, the header file:
// FileLogTarget.h : Deklaration von CFileLogTarget
#pragma once
#include "resource.h"       // Hauptsymbole
#include <atlctl.h>
#include "DCIpuControl2003.h"

// CFileLogTarget
class ATL_NO_VTABLE CFileLogTarget : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public IDispatchImpl<IFileLogTarget, &IID_IFileLogTarget, &LIBID_DCIpuControl2003Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
	public IPersistStreamInitImpl<CFileLogTarget>,
	public IOleControlImpl<CFileLogTarget>,
	public IOleObjectImpl<CFileLogTarget>,
	public IOleInPlaceActiveObjectImpl<CFileLogTarget>,
	public IViewObjectExImpl<CFileLogTarget>,
	public IOleInPlaceObjectWindowlessImpl<CFileLogTarget>,
	public CComCoClass<CFileLogTarget, &CLSID_FileLogTarget>,
	public CComControl<CFileLogTarget>
{
public:

	CFileLogTarget() : m_bstrFileName(OLESTR("IpuLogFile.dat"))
	{
    	m_bAutoSize = TRUE;
	    m_bResizeNatural = TRUE;
	    SIZEL sPix, sHiM;
	    sPix.cx = 32;
	    sPix.cy = 32;
	    AtlPixelToHiMetric(&sPix, &sHiM);
	    m_sizeExtent = sHiM;
	    m_sizeNatural = sHiM;
	}

DECLARE_OLEMISC_STATUS(OLEMISC_RECOMPOSEONRESIZE | 
	OLEMISC_INVISIBLEATRUNTIME |
	OLEMISC_CANTLINKINSIDE | 
	OLEMISC_INSIDEOUT | 
	OLEMISC_ACTIVATEWHENVISIBLE | 
	OLEMISC_SETCLIENTSITEFIRST
)

DECLARE_REGISTRY_RESOURCEID(IDR_FILELOGTARGET)

BEGIN_COM_MAP(CFileLogTarget)
	COM_INTERFACE_ENTRY(IFileLogTarget)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(IViewObjectEx)
	COM_INTERFACE_ENTRY(IViewObject2)
	COM_INTERFACE_ENTRY(IViewObject)
	COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY(IOleInPlaceObject)
	COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
	COM_INTERFACE_ENTRY(IOleControl)
	COM_INTERFACE_ENTRY(IOleObject)
	COM_INTERFACE_ENTRY(IPersistStreamInit)
	COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
END_COM_MAP()

BEGIN_PROP_MAP(CFileLogTarget)
	PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
	PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
	// Beispieleinträge
	// PROP_ENTRY("Property Description", dispid, clsid)
	// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

BEGIN_MSG_MAP(CFileLogTarget)
	CHAIN_MSG_MAP(CComControl<CFileLogTarget>)
	DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
// Handlerprototypen:
//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

// IViewObjectEx
	DECLARE_VIEW_STATUS(0)

// IFileLogTarget
public:
	HRESULT OnDraw(ATL_DRAWINFO& di);

	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		USES_CONVERSION;
		TCHAR pszStr[256];
		_stprintf(pszStr, _T("Open / create file '%s'."), OLE2CT(m_bstrFileName));
		MessageBox(pszStr);

		return S_OK;
	}
	
	void FinalRelease() 
	{
		USES_CONVERSION;
		TCHAR pszStr[256];
		_stprintf(pszStr, _T("Close file '%s'."), OLE2CT(m_bstrFileName));
		MessageBox(pszStr);
	}

// IIpuLogTarget
public:
	STDMETHOD(AddLogString)(BSTR string);

// IFileLogTarget
public:
	STDMETHOD(get_FileName)(BSTR* pVal);
	STDMETHOD(put_FileName)(BSTR newVal);

protected:
	CComBSTR m_bstrFileName;
	HANDLE   m_hFile;
};

OBJECT_ENTRY_AUTO(__uuidof(FileLogTarget), CFileLogTarget)


And the cpp file:
// FileLogTarget.cpp : Implementierung von CFileLogTarget
#include "stdafx.h"
#include "FileLogTarget.h"

// CFileLogTarget

HRESULT CFileLogTarget::OnDraw(ATL_DRAWINFO& di)
{
	RECT& rc = *(RECT*)di.prcBounds;
	// Clip-Bereich auf Rechteck festlegen, das von di.prcBounds bestimmt wird
	HRGN hRgnOld = NULL;
	if (GetClipRgn(di.hdcDraw, hRgnOld) != 1)
		hRgnOld = NULL;
	bool bSelectOldRgn = false;

	HRGN hRgnNew = CreateRectRgn(rc.left, rc.top, rc.right, rc.bottom);

	if (hRgnNew != NULL)
	{
		bSelectOldRgn = (SelectClipRgn(di.hdcDraw, hRgnNew) != ERROR);
	}

	HICON hIcon = ::LoadIcon(_AtlBaseModule.GetModuleInstance(), 
		MAKEINTRESOURCE(IDI_FILELOGTARGET));
    DrawIcon(di.hdcDraw, rc.left, rc.top, hIcon); 

	if (bSelectOldRgn)
		SelectClipRgn(di.hdcDraw, hRgnOld);

	return S_OK;
}

STDMETHODIMP CFileLogTarget::AddLogString(BSTR string)
{
	// TODO: Fügen Sie hier Ihren Implementierungscode ein.

	return S_OK;
}

STDMETHODIMP CFileLogTarget::get_FileName(BSTR* pVal)
{
	// TODO: Fügen Sie hier Ihren Implementierungscode ein.

	m_bstrFileName.CopyTo(pVal);

	return S_OK;
}

STDMETHODIMP CFileLogTarget::put_FileName(BSTR newVal)
{
	// TODO: Fügen Sie hier Ihren Implementierungscode ein.

	m_bstrFileName = newVal;

	return S_OK;
}



Cheers,
Daniel.
--
FIND A JOB YOU LOVE, AND YOU'LL NEVER HAVE TO WORK A DAY OF YOUR LIFE. Wink | ;)
QuestionDesign mode? Pin
Daniel Strigl25-Sep-03 0:16
Daniel Strigl25-Sep-03 0:16 
AnswerRe: Design mode? Pin
Abhishek Srivastava19-Oct-03 21:07
Abhishek Srivastava19-Oct-03 21:07 
GeneralInstance handle under ATL7 Pin
Daniel Strigl24-Sep-03 22:39
Daniel Strigl24-Sep-03 22:39 
GeneralRe: Instance handle under ATL7 Pin
geo_m25-Sep-03 0:06
geo_m25-Sep-03 0:06 
GeneralCOM Interop - .NET COM events and C++ client Pin
blade24-Sep-03 13:33
blade24-Sep-03 13:33 
GeneralCOleObjectFactory::RegisterAll() causes Assertion Failure in Debug mode Pin
Nirav Thakkar24-Sep-03 4:39
Nirav Thakkar24-Sep-03 4:39 
GeneralRe: COleObjectFactory::RegisterAll() causes Assertion Failure in Debug mode Pin
Member 333748530-Jun-09 2:22
Member 333748530-Jun-09 2:22 
Questionimplement resizing on dynamically created &quot;Kodak Image Edit ActiveX Control&quot;??? Pin
nsaadyah23-Sep-03 21:28
nsaadyah23-Sep-03 21:28 
GeneralActiveX property - Visible in object viewer?! Pin
Daniel Strigl23-Sep-03 20:39
Daniel Strigl23-Sep-03 20:39 
GeneralClear cache of DCOM RPC binding handle Pin
sree_sundaram22-Sep-03 5:19
sree_sundaram22-Sep-03 5:19 
GeneralMSXML usage in VC7 COM IDL file Pin
Vivekananda.C22-Sep-03 3:27
Vivekananda.C22-Sep-03 3:27 
GeneralRe: MSXML usage in VC7 COM IDL file Pin
Stefan Pedersen22-Sep-03 3:59
Stefan Pedersen22-Sep-03 3:59 
QuestionQuestion about COM+: How to make a client computer to use a component? Pin
doisy22-Sep-03 0:16
doisy22-Sep-03 0:16 
QuestionImage Edit ActiveX Control? Pin
nsaadyah21-Sep-03 19:56
nsaadyah21-Sep-03 19:56 
GeneralError in installing (Serviced Component) in COM+ Pin
mosessaur20-Sep-03 12:45
mosessaur20-Sep-03 12:45 
GeneralCom interop Pin
Abhijit Desai20-Sep-03 0:14
Abhijit Desai20-Sep-03 0:14 
GeneralSimple ActiveX control without GUI Pin
Daniel Strigl19-Sep-03 4:01
Daniel Strigl19-Sep-03 4:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.