Немного урока истории здесь. Я работаю над унаследованным приложением C ++ / MFC и пытаюсь начать постепенную модернизацию, выдвигая компоненты, написанные на C # (WinForms и более поздние WPF).
Я застрял с использованием .Net / 1.1 и VS / 2003 по многим причинам, которые невозможно решить в ближайшем будущем.
В настоящее время в качестве доказательства концепции работает нечто подобное:
#pragma push_macro("new")
#undef new
WinFormA::Form1* myform;
myform = __gc new WinFormA::Form1();
myform->ShowDialog();
#pragma pop_macro("new")
Проблема, с которой я столкнулся, заключается в следующем: мне нужен неуправляемый код C ++ / MFC для передачи указателя обратного вызова в управляемый код C # WinForm, чтобы я мог фиксировать взаимодействия с пользователем и обрабатывать их в приложении.
Я просматривал некоторые статьи, например в этой статье MSDN , но он не работает в VS / 2003 (компилятору не нравится синтаксис делегата).
Есть ли другие варианты? Я не думаю, что могу использовать DLLImport, поскольку мне нужно взаимодействовать с конкретным экземпляром приложения, а не с плоским API.
Спасибо!