【问题标题】:C++ Windows remove maximize boxC++ Windows 删除最大化框
【发布时间】:2011-11-26 09:43:00
【问题描述】:

我在调用CreateWindow时使用这些窗口样式@
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
这会禁用最大化框,但有什么办法可以完全删除它?

【问题讨论】:

  • 我认为删除它是一个坏主意,因为它的可用性。紧靠关闭左侧的按钮始终为最大化,左侧的按钮始终为最小化。改变这样的事情会让人们感到困惑。
  • @HansPassant - 您能否回复一个链接,让我可以阅读更多关于“不可能”的信息。真的很难相信微软不会提供一种方法来做到这一点......(但我看过,到目前为止还不能证明你错了:)谢谢
  • @HansPassant - 实际上,在得出你可能是对的结论后,我做了更多的工作(我发现很难不同意在这个网站上拥有 400K 声誉的人 :) 我尝试了代码 here,它似乎可以在 Windows 7 上运行。

标签: c++ c windows winapi maximize


【解决方案1】:

没有简单的方法,但是如果您要自己绘制标题栏 - 在这种情况下您可以做到。

为了给你一个想法,这篇文章Adding a 'Minimize to tray'-button to a Form's caption bar 解释了如何添加一个按钮。删除标准按钮大致相同 - 自定义non-client area

【讨论】:

    【解决方案2】:

    这将从 Windows 7 面板中删除关闭、最小化和最大化按钮 我意识到这很晚了 ,但将其发布在这里,因为它可能会帮助其他人遇到同样的问题。

    void ClearButtons(void)
    {
        int index = WS_BORDER;
        unsigned int a = (unsigned int)((WS_BORDER | WS_CAPTION) & (~WS_ICONIC));
    
        LONG_PTR lPtr;
        HWND hWnd = GetActiveWindow();
        lPtr = GetWindowLongPtr(hWnd, index); 
        SetWindowLongPtr(hWnd, GWL_STYLE, a);  
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2015-05-02
      • 2014-04-10
      • 2011-02-27
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2013-10-10
      相关资源
      最近更新 更多