c++ - 限制 WINAPI 中的调整大小方向

标签 c++ c winapi resize

我需要通过 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;
    }

关于c++ - 限制 WINAPI 中的调整大小方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910986/

相关文章:

c++ - VS2017 15.6.1 更新后未解析的外部 "int __cdecl invoke_main(void)"

c++ - 采用模板非类型模板参数的函数模板

c - 为什么我的 C 代码在 Windows 中出错? Linux 没问题

c - winnt.h 中的 Mingw32 中未定义 LPCTSTR 到 LPWSTR 的转换

c++ - visual studio 有哪些功能可以帮助调试 C++ 中的编译时错误?

c++ - 如何设置多个单选按钮组以获得正确的 Tab 键顺序和键盘交互 (WIN32)?

c# - 我应该如何为互操作声明这个 C 结构?

c++ - 使用 libcurl : it does not appear to get the entire page 时出现问题

c++ - RegSetValueEx 只显示写入第一个字符

c++ - `SetWindowLong()` 函数不执行 't change window style even after calling ` SetWindowPos()`