Немного урок истории здесь. Я работаю над устаревшим приложением 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 для передачи указателя обратного вызова в управляемый код WinForm C #, чтобы я мог фиксировать взаимодействия пользователя и обрабатывать их приложением.
Я просмотрел некоторые статьи, такие как эта статья MSDN, но она не работает в VS / 2003 (компилятору не нравится синтаксис делегата).
Есть ли другие варианты? Я не думаю, что могу использовать DLLImport, поскольку мне нужно взаимодействовать с конкретным экземпляром приложения, а не с плоским API.
Спасибо!