MFC 对话框的事件处理
Posted
技术标签:
【中文标题】MFC 对话框的事件处理【英文标题】:Event Handling for MFC Dialog 【发布时间】:2009-12-23 11:24:50 【问题描述】:这是我今天的第二个问题,请原谅。
我正在编写一个包装库来与扫描仪设备通信。源代码在 C++ MFC 中。我正在将其转换为将从 C# 调用的普通 Dll。所以,我在 C# 中使用 DllImport 来调用包装库。
现在我得到了 MFC 代码,并且库是一个 ActiveX 对象,至少我是这么认为的。
class CDpocx : public CWnd
因此,在我的包装库中,我将拥有一个 CDpocx 实例,并将通过 C# P/Invoke 调用它。但问题是 CDpocx 也会引发一些我需要捕捉的事件。在传统的应用程序中,我只会附加一个功能。但是我如何将事件附加到非 MFC 类上。
我见过类似的东西:
BEGIN_EVENTSINK_MAP(CVC60Dlg, CDialog)
//AFX_EVENTSINK_MAP(CVC60Dlg)
ON_EVENT(CVC60Dlg, IDC_DPOCXCTRL1, 1 , OnReadyDpocxctrl1, VTS_NONE)
//AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
OnReadyDpocxctrl1是处理1(Ready)事件的函数。
如何在非 MFC 类中获得类似的功能。
问候, 马克苏德
【问题讨论】:
【参考方案1】:我不确定这是否是你想要的,但如果你想从 C# 调用 ActiveX 组件,你应该使用 Windows Forms ActiveX Control Importer (Aximp.exe) 它将 COM 类型库中 ActiveX 控件的类型定义转换为Windows 窗体控件。
【讨论】:
谢谢。会试试这个。实际上问题是,我有 C++ 和 VisualBasic 的驱动程序和示例代码。 C++ 版本(最初是在 VC6 中转换为 VC++.NET 2008)完美运行,而 Visual Basic 版本(VB6 转换为 VB.NET 并再次转换为 VC#.NET)无法按预期工作。所以我很想创建一个 C++ Wrapper,它将再次从 C# 调用。我会试试你的解决方案。以上是关于MFC 对话框的事件处理的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2008. MFC 事件向导损坏