我们有一个 c++ 遗留应用程序,并且一直在使用 c# 小程序对其进行扩展,这些小程序是使用来自父 c++ 应用程序的 COM 调用的。它们会调出非模态窗口。此外,我认为这些 .NET 窗口不是 c++ 应用程序的正确子窗口,因为 EnumChildWindows 错过了它们,而 EnumWindows 找到了它们。但是,仍然存在一种类似孩子的行为,即如果您关闭父 c++ 应用程序,c# 窗口也会关闭。
我对这一切的基本问题是,如果用户调用这些 c# 小程序之一,然后无意中单击父 (c++) 应用程序窗口,c# 窗口就会掉到后台。如果用户想把它带回顶部,他们应该能够在任务栏中单击它的图标。不幸的是,由于一些奇怪的原因,经常需要点击任务栏图标三次!第一次应该把一个隐藏的窗口带到顶部,但它没有。第二次点击最小化隐藏窗口,第三次恢复成功。
在弥合遗留-> .NET 鸿沟时,是否还有其他人遇到过此错误/功能?我想知道我是否可以拦截第一次单击我的 C# 小程序的任务栏图标,并以某种方式强制它返回顶部。:-)
我一直在尝试以下方法:
[DllImport("User32.dll")]
private static extern int ShowWindow(IntPtr hwnd, IntPtr nCmdShow);
但即使我得到这个工作,我仍然需要拦截第一次鼠标点击。谢谢你的帮助!