限制 WINAPI 中的调整大小方向

feo*_*eos 0 c c++ winapi resize

我需要禁用除 之外的所有调整大小WMSZ_BOTTOM,包括禁用相应的鼠标图标。

处理WM_GETMINMAXINFO没有帮助,因为它是在窗口矩形调整(内部WM_CREATE)之前调用的,所以我没有什么可设置的。我尝试复制当前矩形并将其设置为WM_SIZINGlParam但是何时调用该副本没有完美的点GetWindowRect(),因为有时当我移动窗口然后通过拖动非预期的边来调整其大小时,它会跳到之前的位置(旧的)矩形得到恢复)。这些看起来像是黑客行为,而不是某种聪明的方法。

当鼠标悬停在窗口边框而非底部时,如何禁用调整鼠标图标大小?

Jon*_*ter 5

@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;
    }
Run Code Online (Sandbox Code Playgroud)