【发布时间】:2012-04-10 14:35:07
【问题描述】:
有没有什么办法(如果有,请提出一些建议:))在另一个填充它的窗口内创建窗口,并且始终保持 100% 的宽度、高度并始终保持与父级相同的位置?简而言之,创建与父窗口相同(大小和移动)的窗口。现在我有这个:
hWnd = CreateWindowEx(WS_EX_TOOLWINDOW,L"Class", L"Title",WS_VISIBLE | WS_POPUP,
0, 0, 0, 0,hParent, NULL, GetModuleHandle(NULL), NULL );
我正在检查 WM_SIZE 或 WM_WINDOWPOSCHANGING 在 CallWndRetProc 中的大小变化。
if(msg->message == WM_WINDOWPOSCHANGING && msg->hwnd == hParent){
WINDOWPOS* pos = (WINDOWPOS*)msg->lParam;
SetWindowPos(hWnd, 0, pos->x, pos->y, pos->cx, pos->cy, SWP_NOACTIVATE);
}
但是有一个问题,pos 具有相对于 hParents 窗口的坐标,而 SetWindowPos 设置相对于整个屏幕的位置。也许有更简单的方法可以将 hWnd 窗口保持在与 hParent 相同的位置?
【问题讨论】:
-
有愿望的地方总有办法。
-
只需使用 WS_CHILD 样式而不是 WS_POPUP
-
不,我只是在创建子窗口。如果我使用 WS_CHILD 它不会“粘”对吗?它将保持相同的位置,但大小为 const?
标签: c++ position parent win32gui