C++在另一个内部创建窗口

标签 c++ position parent win32gui

有没有什么办法(如果是,请提出建议 :) )在另一个填充它的窗口内创建窗口,并且宽度和高度始终为 100% 并始终与父窗口保持在同一位置?简而言之,创建与父窗口行为(大小和移动)相同的窗口。现在我有这个:

hWnd = CreateWindowEx(WS_EX_TOOLWINDOW,L"Class", L"Title",WS_VISIBLE | WS_POPUP,
                      0, 0, 0, 0,hParent, NULL, GetModuleHandle(NULL), NULL );

我正在检查 WM_SIZEWM_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 相同的位置?

最佳答案

您可以使用 GetWindowInfo()查询窗口的当前屏幕位置。使用它,您可以从相对坐标计算出所需的屏幕位置

关于C++在另一个内部创建窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090764/

相关文章:

c++ - 使用没有初始化的类成员函数

android - 获取Android GridView中Item的绝对坐标

html - css/position 主要内容 div 到登录和注册 div 的右侧

image - 获取Docker镜像的父镜像

java - 在自引用 Java 类中查找父对象

tfs - 在TFS 2010中将文件夹副本转换为分支

c# - 使用 C# P/Invoke 的方法对 Struct 内的数组进行编码

c++ - 将较大的整数写为二进制并将其读回会产生不好的结果

c++ - OS X : Any way to DELAY loading of a DEPENDENT library (. 动态库)?

html - 如何跨浏览器标准化汉字的上边距