11
我有一個Win32 HWND,我想讓用戶按住鼠標左鍵並拖動屏幕周圍的窗口。假設(1)我可以檢測到用戶何時握住控件,鼠標左鍵並移動鼠標,(2)我有新的和舊的鼠標位置,如何使用Win32 API和我的HWND來更改窗戶的位置?如何實現使用客戶區拖動窗口?
我有一個Win32 HWND,我想讓用戶按住鼠標左鍵並拖動屏幕周圍的窗口。假設(1)我可以檢測到用戶何時握住控件,鼠標左鍵並移動鼠標,(2)我有新的和舊的鼠標位置,如何使用Win32 API和我的HWND來更改窗戶的位置?如何實現使用客戶區拖動窗口?
爲WM_NCHITTEST實現消息處理程序。調用DefWindowProc()並檢查返回值是否爲HTCLIENT。如果是則返回HTCAPTION,否則返回DefWindowProc返回值。您現在可以單擊客戶端區域並拖動窗口,就像通過單擊標題拖動窗口一樣。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NCHITTEST: {
LRESULT hit = DefWindowProc(hWnd, message, wParam, lParam);
if (hit == HTCLIENT) hit = HTCAPTION;
return hit;
}
// etc..
}
是正確答案 –
等待......如果這是可能的子窗口...我很驚訝...... – Dmitry
不僅如此,例如你可以返回像HTBOTTOMRIGHT邊緣值之一,現在你得到一個調整大小的光標,並且可以通過拖動角來使其變大或變小。動力。 –