【问题标题】:avoid windows resizing with double click避免通过双击调整窗口大小
【发布时间】:2025-12-06 00:30:02
【问题描述】:

与此post相关

我试图禁用窗口大小调整。所以我在我的 wxFrame 上禁用了 wxDEFAULT_FRAME_STYLE 和 wxRESIZE_BORDER 选项......它可以工作。

但是现在,如果用户在标题栏上双击,窗口会再次调整大小。

当用户双击标题栏时,如何避免调整窗口大小?

谢谢。

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    您需要删除wxMAXIMIZE_BOX 样式。


    根据 cmets,您在执行此操作时遇到了问题,或者您使用的 wxWidgets 可能没有映射到底层窗口样式。如果是这种情况,那么您可以像这样删除WS_MAXIMIZEBOX 窗口样式:

    DWORD style = GetWindowLongPtr(hwnd, GWL_STYLE);
    SetWindowLongPtr(hwnd, GWL_STYLE, style & ~WS_MAXIMIZEBOX);
    

    【讨论】:

    • 我没有使用 wxMAXIMIZE_BOX,只有 wxCAPTION 和 wxCLOSE_BOX :(
    • 哪个操作系统?
    • 我的意思是如果是Windows,你可以使用SetWindowLongPtr来删除WS_MAXIMIZEBOX。无论如何,wxWidgets 应该会发生这种情况,但我已经看到 wxWidgets 的错误报告说它不会发生。您可以有用地使用GetWindowLongPtr 来找出您窗口的窗口样式。在这里发布,我相信我们可以找到问题。
    • 大卫,我正在使用 W7、MinGW (gcc 4.8.1) 和 wxWidgets 2.9.5。使用 SetWindowsLongPtr 可能会有所帮助,但现在,我不知道如何将它与使用 XRC 文件从 wxWidwet 创建的窗口一起使用。再次感谢
    • 你的代码全错了。您正在设置扩展窗口样式。但是您需要设置窗口样式。而且您正在将 wxWidgets 标志与 Window 样式小部件混合在一起。我会更新答案,告诉你该怎么做。
    最近更新 更多