我有一个按钮向量,我想出现在两个对话框中。一些在我的当前窗口中,一个在当前窗口的父级中。我希望它们出现在最上面。
因此,对于当前窗口,它可以正常工作。对于父窗口,我设置了父窗口,按钮被正确定位,但它出现在另一个按钮后面。
我已经在设置 SWP_NOZORDER:
std::vector<CGdipButtonEx*> m_trashIcons;
...
m_trashButtons[i]->SetWindowPos(nullptr,x,y,25,25,SWP_NOZORDER );
要将按钮设置为显示在其他按钮上方,您需要将.HWND_TOP
作为第一个参数传递hwndInsertAfter
。
m_trashButtons[i]->SetWindowPos(HWND_TOP,x,y,25,25,SWP_SHOWWINDOW);
不要过去SWP_NOZORDER
。Z 顺序是窗口彼此重叠的顺序(z 轴)。那是你想要设置的东西,所以说“请不要z-order”是完全错误的事情。
根据文档:
SWP_NOZORDER 0x0004 保留当前 Z 顺序(忽略 hWndInsertAfter 参数)。
窗口是分层的。如果您有两个对话框,它们都有控件,则上层对话框中的所有控件都将出现在下层对话框中的控件之上,即使下层对话框中的控件被标记为最顶层而上层对话框中的控件没有吨。