【问题标题】:Replace system menu popup on windows替换windows上的系统菜单弹出窗口
【发布时间】:2012-10-21 18:08:39
【问题描述】:

我想用我的自定义条目替换默认的系统菜单(恢复、移动、大小等)。我正在谈论的菜单可以通过单击窗口图标上的左键或单击窗口标题上的右键来打开。 我可以删除所有项目并用我自己的条目填充此菜单。但是,如果我删除所有条目,则最小化、最大化和关闭按钮将变为非活动状态。所以他们依赖于那些菜单项。

我想让最小、最大、关闭按钮像往常一样工作,但系统菜单包含我自己的项目(就像在 Windows Media Player 中完成的那样)。 我正在使用 Qt,但我几乎可以肯定它不能用它来完成,所以任何解决方案都会受到赞赏。

【问题讨论】:

    标签: c++ windows qt winapi


    【解决方案1】:

    不要从系统菜单中删除 Min/Max/Close 项目。处理WM_SYSCOMMAND 消息要好得多(SC_MINIMIZESC_MAXIMIZESC_RESTORESC_CLOSE)。

    【讨论】:

    • 如果我不从菜单中删除这些项目,那么我就不能拥有完全自定义的菜单,因为它将包含我不需要的条目。
    • 您不需要“关闭”项目,还是需要自己的“关闭”项目? (与其他最小/最大/恢复/...相同的问题)
    • 好吧,我需要关闭(虽然它会有其他名称),但我不需要 min、max 等。我仍然想保持按钮在 min/max 下的功能
    • 在适当的 WM_NCxxx 消息(WM_NCRBUTTONDOWN/UP 等)上创建您自己的弹出菜单(不要更改系统)和 TrackPopupMenu
    • 处理相应的事件,你永远不会看到“sysmenu”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多