CreateEx()创建的子窗口与同级窗口重叠

Child window created by CreateEx() overlapped by sibling windows

本文关键字:窗口 重叠 创建 CreateEx      更新时间:2023-10-16

我尝试使用创建一个子窗口

CreateWindowEx( NULL, NULL, "MyChild", WS_CHILD | WS_VISIBLE | WS_BORDER, 300, 300, 400, 200, hParentWnd, NULL, NULL );

其中父HWND hParentWnd已经具有许多其他子窗口。然而,这创建了一个隐藏在所有兄弟姐妹后面的子窗口。Windows Spy++显示它在hParentWnd的子窗口中位于z顺序的顶部(第一个)。我已经尝试了所有不同的win32命令,包括SetWindowPos()BringWindowToTop()SetForegroundWindow()SetFocus()SetActiveWindow()SendMessage(WM_ACTIVATE, 0, 0)等,但没有一个命令是从兄弟命令后面执行的。当我在CreateWindowEx()命令中将WS_CHILD替换为WS_OVERLAPPEDWINDOW时,创建的非子窗口显示为最顶部的前台活动窗口没有问题。那么,我必须做些什么才能让孩子的窗户从兄弟姐妹后面爬到顶部呢?

非常感谢。

z/0

这在MSDN的CreateWindowEx()的文章中非常明确:

如果创建的窗口是子窗口,则其默认位置位于Z顺序的底部。如果创建的窗口是顶级窗口,则其默认位置位于Z顺序的顶部。

您需要使用SetWindowPos()将其移动到Z顺序的顶部。