我需要通过WMSZ_BOTTOM
来禁用所有大小调整,包括禁用相应的鼠标图标。
处理WM_GETMINMAXINFO
没有帮助,因为它是在调整窗口矩形之前调用的(在WM_CREATE
内部),所以我没有要设置的内容。我试图复制当前矩形并将其设置为WM_SIZING
到lParam
中,但在调用该复制的GetWindowRect()
时没有完美的点,因为有时当我移动窗口,然后通过拖动非预期的边来调整其大小时,它会跳到上一个位置(恢复旧矩形)。这些看起来像是黑客而不是聪明的方法。
当鼠标悬停在除底部以外的窗口边框上时,如何禁用调整鼠标图标大小?
最佳答案
替代@manuell的方法不需要您自己检查鼠标位置:
case WM_NCHITTEST:
{
LRESULT lRes = DefWindowProc(hWnd, uMsg, wParam, lParam);
if (lRes == HTBOTTOMLEFT || lRes == HTBOTTOMRIGHT
|| lRes == HTTOPLEFT || lRes == HTTOPRIGHT || lRes == HTTOP
|| lRes == HTLEFT || lRes == HTRIGHT || lRes == HTSIZE)
lRes = HTBORDER; // block resizing for all but HTBOTTOM
return lRes;
}