我正在使用以下代码创建窗口控件,
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
中的坐标
子窗口的位置是相对于其父窗口的,而不是屏幕。如果父窗口移动,它的子窗口也会随之移动。
如果要将给定的子窗口移动到给定的屏幕坐标,请使用
ScreenToClient()
或MapWindowPoints()
将屏幕坐标转换为相对于父窗口的客户坐标,然后将子窗口移动到该坐标。