如何设置父窗口而不影响坐标?

问题描述 投票:0回答:1

我正在使用以下代码创建窗口控件,

m_hWnd = CreateWindowEx(
        0,
        pszClassName, 0,
        WS_VISIBLE | WS_POPUP, 
        0,
        0,
        0,
        0,
        parenthwnd,
        NULL,
        hInst,
        NULL);

然后我可以按预期将控件移动到屏幕上的指定位置:

MoveWindow(m_hWnd,x, y,width, height, SWP_NOZORDER);

但是当父窗口改变时,有没有办法重新分配

parenthwnd of m_hwnd

我尝试使用

SetParent
功能,但现在 MoveWindow 不使用屏幕坐标中的 [x,y],而是
parenthwnd

中的坐标
c++ winapi
1个回答
0
投票

子窗口的位置是相对于其父窗口的,而不是屏幕。如果父窗口移动,它的子窗口也会随之移动。

如果要将给定的子窗口移动到给定的屏幕坐标,请使用

ScreenToClient()
MapWindowPoints()
将屏幕坐标转换为相对于父窗口的客户坐标,然后将子窗口移动到该坐标。

© www.soinside.com 2019 - 2024. All rights reserved.