Обработка событий для MFC Dialog - PullRequest
0 голосов
/ 23 декабря 2009

Это мой второй вопрос дня, простите меня.

Я пишу библиотеку-оболочку для связи со сканером. Исходный код был на C ++ MFC. Я конвертирую его в простой Dll, который будет вызываться из C #. Итак, я использую DllImport в C # для вызова библиотеки оболочки.

Теперь мне предоставлен код 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 (Готово).

Как я могу получить симмилярную функцию в не MFC классе.

С уважением, Максуд

1 Ответ

0 голосов
/ 26 декабря 2009

Я не уверен, что это именно то, что вам нужно, но если вы хотите вызвать компонент ActiveX из C #, вам следует использовать Импортер элементов управления ActiveX Windows Forms (Aximp.exe) , который преобразует определения типов в библиотеке типов COM для элемента управления ActiveX в элемент управления Windows Forms.

...