我想建立一个对话框,使其不与任何其他应用程序共享其客户区。为此,我已将其粘贴在屏幕顶部和Z顺序中所有其他窗口的顶部
this->SetWindowPos(&wndTopMost, 10, 0, 0, 0, SWP_NOMOVE);
现在我需要所有其他应用程序显示在之下,以便它不会覆盖任何其他窗口应用程序的菜单或顶部窗格。
任何帮助都会得到真正的赞赏。
答案 0 :(得分:3)
好像你想要实现一个appbar,所以你必须使用SHAppBarMessage。
示例(这里hwnd
- 是你的Windows句柄。这个窗口应该有WS_EX_TOOLWINDOW样式才能工作):
#include <Shellapi.h>
#define APPBAR_CALLBACK (WM_USER + 0x01)
APPBARDATA pData;
RECT rt;
...
GetWindowRect(hwnd,&rt);
pData.cbSize=sizeof(pData);
pData.hWnd=hwnd;
pData.uCallbackMessage=APPBAR_CALLBACK;
pData.uEdge=ABE_TOP;
pData.rc=rt;
SHAppBarMessage(ABM_NEW,&pData);
SHAppBarMessage(ABM_SETPOS, &pData);
MoveWindow(pData.hWnd,
pData.rc.left,
pData.rc.top,
pData.rc.right - pData.rc.left,
pData.rc.bottom - pData.rc.top,
TRUE);
要禁用此模式,您应致电
SHAppBarMessage(ABM_REMOVE,&pData);