返回首页

你好

我已经写在C#中的ActiveX控件。见下面的代码:

namespace ActiveXCSharp

{

	[ComVisible(true)]

	[ProgId("ActiveXCSharp.ButtonAx2")]

	[ComSourceInterfaces(typeof(IButtonAx2))]

	[ClassInterface(ClassInterfaceType.AutoDual)]

	public class ButtonAx2 : Button, IButtonAxInterface

	{

		// ptr to dll adapter

		private IntPtr _adapterDllPtr;

		private const uint DotNetButtonPressed = 0x0400;

 

		public ButtonAx2()

		{

			Application.EnableVisualStyles();

 

			InitComEvents();

			Click += ButtonAx2Click;

		}

 

		#region eventhandling

		

		private void InitComEvents()

		{

			ButtonClicked = ComEventButtonClicked;

		}

 

		public delegate void ButtonClickedEventHandler();

		public event ButtonClickedEventHandler ButtonClicked;

		// Dummy Method to use when firing the event

		private void ComEventButtonClicked() { }

 

		private void FireButtonClickedEvent()

		{

			if (ButtonClicked != null)

			{

				ButtonClicked();

			}

		}

 

		private void ButtonAx2Click(object sender, EventArgs e)

		{

			SendMessage(_adapterDllPtr.ToInt32(),

			            DotNetButtonPressed, IntPtr.Zero, IntPtr.Zero);

			FireButtonClickedEvent();

		}

 

		#endregion eventhandling

 

		#region IButtonAxInterface Member

 

		public void SetButtonCaption(String strNewCaption)

		{

			Text = strNewCaption;

		}

 

		public void SetAdapterDllPtr(IntPtr iAdapterDllPtr)

		{

			_adapterDllPtr = iAdapterDllPtr;

		}

 

		#endregion IButtonAxInterface Member

 

		[ComRegisterFunction]

		public static void RegisterClass(string key)

		{

			...

		}

 

		[ComUnregisterFunction]

		public static void UnregisterClass(string key)

		{

			...

		}

 

		#region MAPPING_OF_USER32_DLL_SECTION

 

		...

 

		#endregion

 

	}

 

}


我想用它在一个MFC对话框。我可以放弃对设计师的控制,将适当的设计和运行中。但是却不是能够创造出它的一个实例。

当,我rightclick设计师的控制,并选择"创建变量一个MessageBox出现说:"ActiveX控件的类型库的访问是不可能的。"

控制注册,并在同一个地方的。dll也有。TLB。

我的问题是如何创建我的ActiveX的一个实例,在C代码中使用?

最佳问候迈克尔

回答