MFC对话框的事件处理

问题描述:

这是我今天的第二个问题,请原谅我。MFC对话框的事件处理

我正在写一个包装库来与扫描仪设备进行通信。源代码在C++ MFC中。我将它转换为一个普通的Dll,它将从C#中调用。所以,我在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是处理(就绪)事件的功能。

如何在非MFC类中获得类似函数?

问候, Maksud

我不知道这是否是你想要的,但如果你想打电话从C#的ActiveX组件,您应该使用Windows Forms ActiveX Control Importer (Aximp.exe)将类型定义转换COM类型将ActiveX控件的库导入Windows窗体控件中。

+0

谢谢。会试试这个。其实问题是,我有用于C++和VisualBasic的驱动程序和示例代码。 C++版本(最初是在VC6中转换为VC++ .NET 2008)完美工作,而Visual Basic版本(VB6转换为VB.NET并再次转换为VC#.NET)无法按预期工作。所以我很想创建一个C++ Wrapper,它将从C#中再次调用。我会尝试你的解决方案。 – max 2009-12-27 13:35:55