你好
我已经写在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代码中使用?
最佳问候迈克尔