我需要通过WMSZ_BOTTOM来禁用所有大小调整,包括禁用相应的鼠标图标。
处理WM_GETMINMAXINFO没有帮助,因为它是在调整窗口矩形之前调用的(在WM_CREATE内部),所以我没有要设置的内容。我试图复制当前矩形并将其设置为WM_SIZINGlParam中,但在调用该复制的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;
    }

08-16 03:35