EnableMenuItem仅适用于“关闭”按钮

时间:2013-11-11 19:30:54

标签: .net vb.net winforms winapi user-interface

我想写一个 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函数时,只有关闭按钮和关闭选项被禁用,就像在代码中一样...

我错过了什么?

1 个答案:

答案 0 :(得分:2)

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