C++ 在父窗口中约束可拖动的子窗口?

C++ 在父窗口中约束可拖动的子窗口?,c++,c,winapi,window,childwindow,C++,C,Winapi,Window,Childwindow,请查看此屏幕截图: 如您所见,“可执行模块”和“线程”子窗口可以像“Themida”父窗口一样在沙箱中自由漫游,如果它们被拖过边缘,溢出就会被隐藏。如何创建此效果?这是一个(MDI)应用程序。包含深灰色背景的窗口是MDI客户端窗口,其中的窗口是MDI子窗口 多年来,Microsoft一直不鼓励使用MDI,因此在新的应用程序中使用MDI时,您可能需要三思。这是一个(MDI)应用程序。包含深灰色背景的窗口是MDI客户端窗口,其中的窗口是MDI子窗口 多年来,Microsoft一直不鼓励使用MDI,

请查看此屏幕截图:

如您所见,“可执行模块”“线程”子窗口可以像“Themida”父窗口一样在沙箱中自由漫游,如果它们被拖过边缘,溢出就会被隐藏。如何创建此效果?

这是一个(MDI)应用程序。包含深灰色背景的窗口是MDI客户端窗口,其中的窗口是MDI子窗口

多年来,Microsoft一直不鼓励使用MDI,因此在新的应用程序中使用MDI时,您可能需要三思。

这是一个(MDI)应用程序。包含深灰色背景的窗口是MDI客户端窗口,其中的窗口是MDI子窗口


多年来,Microsoft一直不鼓励使用MDI,因此在新应用程序中使用MDI时,您可能需要三思。

只需将窗口样式设置为
WS\u CHILD
,窗口将被限制在父客户端矩形中

您可以在创建窗口期间或使用
SetWindowLongPtr()
GetWindowLongPtr()
后执行此操作:


另外,您不需要创建MDI应用程序来实现此行为。

只需将窗口样式设置为
WS\u CHILD
,窗口将被限制在父客户端矩形中

您可以在创建窗口期间或使用
SetWindowLongPtr()
GetWindowLongPtr()
后执行此操作:


另外,您无需创建MDI应用程序即可实现此行为。

感谢您为我添加图像。感谢您为我添加图像。是否有任何方法可以实现(视觉或功能)类似效果?我正在编写一个应用程序,在我小的时候将游戏窗口嵌入到我自己的窗口中,然后提供各种工具与之交互。我本来打算让每个“工具”和游戏窗口本身都是MDI子窗口。@VincentLindgren底层技术仍然有效,因此没有什么可以阻止您使用MDI,只是建议不要再使用这种界面。MDI并没有被Microsoft弃用。基于可用性方面的考虑,Microsoft建议不要使用它,但不是因为不推荐(请参阅:“许多新的和中级用户发现很难学会使用MDI应用程序。因此,您应该考虑其他模型用于您的用户界面。但是,您可以使用MDI用于不适合现有模型的应用程序。”“有没有办法实现(视觉上的或功能上的)?”类似的效果?我正在编写一个应用程序,在我小的时候将一个游戏窗口嵌入到我自己的窗口中,然后提供各种各样的工具与之交互。我将拥有每一个“工具”“而且游戏窗口本身就是一个MDI子窗口。@VincentLindgren底层技术仍然有效,因此没有任何东西阻止您使用MDI,只是建议您不要再使用这种界面。MDI没有被Microsoft弃用。基于可用性方面的考虑,Microsoft建议不要使用它,但不是因为不推荐(请参阅:“许多新的和中级用户发现很难学会使用MDI应用程序。因此,您应该为用户界面考虑其他模型。但是,您可以将MDI用于不容易适应现有模型的应用程序中。”
 SetWindowLongPtr(hwnd, GWL_STYLE, WS_CHILD | GetWindowLongPtr(hwnd, GWL_STYLE));