我在 VB6 中有显示窗口(VB6 窗口)的功能。我从.NET 窗口调用这个函数。VB6 窗口正确显示,位于顶部且处于活动状态。我可以在其中写一些东西,将焦点更改为其他控件(使用 Tab 键),但是当我单击此窗口(VB6)时,我将移至 .NET 窗口(VB6 窗口返回)。
有什么问题?我尝试使用 WinApi 设置父/所有者/焦点,但没有结果。
没有像“VB6 窗口”或“NET 窗口”这样的东西——所有这些都是具有不同属性的本机窗口。
如果您的焦点被另一个窗口窃取,则您的消息队列或窗口继承设置不正确 - 拥有一个主窗口和 X 个子窗口的好习惯,如果您想要那么多窗口,您可以向它们添加 z-order ... win32-GIMP 使用它,它看起来不正确,但那只是我的 2 美分。
您可以通过参数传递主窗口的 HWND,此文档应该让您对适当的参数列表有所了解:CreateWindow() 特别是 WS_CHILD 将是必要的:窗口样式
如果您想要一个即发即弃的解决方案:切换到对话框:DialogBox() --> 这将创建一个模态对话框,它几乎可以一步解决您的所有问题……虽然它是一个有点特殊的窗口- 开箱即用的功能是有代价的......