我希望能夠寫出這樣的代碼:如何獲得控件相對於窗口客戶端矩形的位置?
HWND hwnd = <the hwnd of a button in a window>;
int positionX;
int positionY;
GetWindowPos(hwnd, &positionX, &positionY);
SetWindowPos(hwnd, 0, positionX, positionY, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
而且有它什麼也不做。不過,我不知道如何寫一個GetWindowPos()
功能,讓我回答了正確的單位:
void GetWindowPos(HWND hWnd, int *x, int *y)
{
HWND hWndParent = GetParent(hWnd);
RECT parentScreenRect;
RECT itemScreenRect;
GetWindowRect(hWndParent, &parentScreenRect);
GetWindowRect(hWnd, &itemScreenRect);
(*x) = itemScreenRect.left - parentScreenRect.left;
(*y) = itemScreenRect.top - parentScreenRect.top;
}
如果我用這個功能,我得到的是相對座標左上角父窗口,但SetWindowPos()
希望相對於標題欄下面的區域的座標(我假設這是「客戶區」,但win32術語對我來說都是有點新的)。
解決方案 這是工作GetWindowPos()
功能(感謝謝爾蓋):
它是一個窗口應用程序 – 2009-12-23 06:24:51
它是如何工作的,DirectX有什麼用處。新手在directx。我做了我自己的功能 – 2009-12-23 06:26:05
是的,它是一個Windows應用程序,因此使用win32 api。 – Andy 2009-12-23 06:43:49