У нас есть унаследованное приложение c ++, и мы расширяем его апплетами c #, которые вызываются с помощью COM из родительского приложения c ++. Они поднимают окна, которые не являются модальными. Более того, я думаю, что эти .NET-окна не являются правильными потомками приложения c ++, поскольку EnumChildWindows пропускает их, а EnumWindows их находит. Однако остается одно поведение, похожее на поведение ребенка: если вы закроете родительское приложение c ++, окно c # также закроется.
Моя основная проблема во всем этом заключается в том, что если пользователь вызывает один из этих апплетов c #, а затем непреднамеренно щелкает окно родительского приложения (c ++), окно c # переходит в фоновый режим. Если пользователь хочет вернуться к началу, он должен просто щелкнуть его значок на панели задач. К сожалению, по какой-то странной причине часто приходится щелкать значок панели задач три раза ! Первый раз должен привести скрытое окно к вершине, но это не так. Второй щелчок минимизирует скрытое окно, а третий успешно восстанавливает его.
Кто-нибудь еще сталкивался с этой ошибкой / функцией при преодолении устаревшего -> .NET разделить? Мне интересно, смогу ли я перехватить первый щелчок на значке панели задач для моего апплета C # и каким-то образом заставить его вернуться обратно к вершине. :-)
Я экспериментировал со следующим:
[DllImport("User32.dll")]
private static extern int ShowWindow(IntPtr hwnd, IntPtr nCmdShow);
но даже если я получу эту работу, мне все равно придется перехватить первый щелчок мышью. Спасибо за вашу помощь!