我想写一个 Helper 类来禁用任何菜单项,例如最小化和最大化按钮,但API函数EnableMenuItem
仅适用于 CloseButton < / strong>和系统菜单的“关闭”选项。
这是我意识到的一个小测试
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
函数时,只有关闭按钮和关闭选项被禁用,就像在代码中一样...
我错过了什么?
答案 0 :(得分:2)
系统可能会动态重置这些项目的状态。启用/禁用标准菜单项的常规机制是处理WM_INITMENU
消息,该消息在显示菜单之前立即发送。