1

我想编写一个Helper类来禁用任何菜单项,如最小化和最大化按钮,但 API 功能EnableMenuItem仅适用于系统菜单的CloseButton和“关闭”选项。

这是我意识到的一个小测试

Public Sub Disable()

    Me.CloseItem_State = &H2 ' Disabled

    For x As Integer = 0 To 999999999 ' Loop over all posible constant values...
        EnableMenuItem(Me.MenuHandle, x, &H0 Or Me.CloseItem_State)
    Next
    ' At this point, ONLY the Close button and close option were disabled.

End Sub

MSDN 的最小化和最大化常量是:

Maximixe = &HF030
Minimize = &HF020

但是就像我说过的那样,我不能禁用它们,也不能将它们变成灰色状态。

而且不仅是关于 TitleBar,弹出系统菜单也会发生同样的事情,当我使用EnableMenuItem上面代码中的功能时,只有关闭按钮和关闭选项被禁用......

我错过了什么?

4

1 回答 1

2

系统可能会动态重置这些项目的状态。启用/禁用标准菜单项的正常机制是处理WM_INITMENU消息,该消息在菜单显示之前立即发送。

于 2013-11-11T20:41:08.587 回答