【发布时间】:2012-03-05 00:48:53
【问题描述】:
目前的项目都是用VC6和VB6编写的。事实证明,.Net 可以编写用于 MFC 的 Active X 控件。因此,我们希望使用 .Net 编写一些活动的 x 控件,同时对遗留代码进行最少的更改。
这是要求:
- Host 应用程序(用 VC6 编写)必须能够从注册的类别中找到并加载活动的 x 控件。
- 活动的 x 控件必须支持属性页。
- 活动 x 控件必须支持属性持久性。
这是我的问题:
- 是否可以使用 .Net WinForm 控件编写 Active X 属性页?以及如何在 C# 中的控件和对应的属性之间进行通信?
-
如何在C#中注册某个类别下的Active X控件?下面是一段 MFC 中关于控件注册的示例代码。
STDAPI DllRegisterServer(void) { HRESULT hr; AFX_MANAGE_STATE(_afxModuleAddrThis); if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid)) return ResultFromScode(SELFREG_E_TYPELIB); if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE)) return ResultFromScode(SELFREG_E_CLASS); hr = CreateComponentCategory(CATID_CTRL_CAT, L"XXXX"); if (FAILED(hr)) return hr; hr = RegisterCLSIDInCategory(CATID_CONTROL, CATID_CTRL_CAT); if (FAILED(hr)) return hr; return NOERROR; }上面的注册有3个步骤,AfxOleRegisterTypeLib、CreateComponentCategory和RegisterCLSIDInCategory。我们如何在 C# 中实现它们?
- 在 C# 中实现属性持久化的等效方法是什么?
提前感谢您的任何 cmets 和帮助!!!
【问题讨论】:
标签: c# .net visual-c++ mfc activex