【问题标题】:What is the WM Windows message for Window Maximize/Minimize/Restore?Window Maximize/Minimize/Restore 的 WM Windows 消息是什么?
【发布时间】:2019-08-21 13:15:42
【问题描述】:

我知道WM_SIZEWM_SIZING,但是当用户使用系统菜单最大化或最小化窗口时是否有消息发送?

我需要在我的项目中捕获此事件,但我无法通过 Google 搜索到消息内容。

【问题讨论】:

    标签: c++ winapi win32gui


    【解决方案1】:

    WM_SYSCOMMAND

    当用户从窗口菜单(以前称为系统或控制菜单)中选择命令或用户选择最大化按钮、最小化按钮、恢复按钮或关闭按钮时,窗口会收到此消息。

    wParam 将设置为 SC_MINIMIZESC_MAXIMIZE 等。

    【讨论】:

      【解决方案2】:

      WM_SIZE 描述:在窗口大小改变后发送到窗口。 wParam 包含原因:

      SIZE_MAXIMIZED 窗口已最大化。 SIZE_MINIMIZED 窗口已最小化。 SIZE_RESTORED 窗口已调整大小, 但 SIZE_MINIMIZED 和 SIZE_MAXIMIZED 值均不适用。

      简而言之,无论是什么原因导致调整大小,都会发送 WM_SIZE。点击最大化按钮相当于从系统菜单中选择最大化选项。

      如果您出于某种原因想要区分鼠标单击和菜单选择,可以使用 WM_NCMOUSEMOVE 来检测鼠标移动到右上角。

      【讨论】:

      • 我需要在窗口最大化时绘制调整大小的位图,但问题是它绘制错误(例如,当窗口最大化时,小位图而不是大位图)所以我虽然可以通过捕获这个来解决事件,但仍然没有运气:(
      • 这取决于绘图位图。在任何情况下,您都不应该在 WM_SIZE 上绘制,而是在 WM_PAINT 上绘制,这样可以确保任何大小都是正确的(在 WM_PAINT 中使用 GetClientRect())。
      猜你喜欢
      • 2018-04-18
      • 2018-03-29
      • 1970-01-01
      • 2016-10-12
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多