Desktop Functions:

   Smart Device Functions:

Show Recent Changes
Subscribe (RSS)
Misc. Pages
Helpful Tools
Suggested Reading
Website TODO List
Download Visual Studio Add-In

EnableMenuItem (user32)

C# Signature:

static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem,
   uint uEnable);

VB.NET Signature:

<DllImport("user32.dll", CallingConvention:=CallingConvention.Cdecl)> _
Public Function EnableMenuItem(ByVal hMenu As IntPtr, ByVal wIDEnableItem As UInteger, ByVal wEnable As UInteger) As IntPtr
End Function;

User-Defined Types:

Constants used with Add/Check/EnableMenuItem:

    internal const UInt32 MF_INSERT       =0x00000000;
    internal const UInt32 MF_CHANGE       =0x00000080;
    internal const UInt32 MF_APPEND       =0x00000100;
    internal const UInt32 MF_DELETE       =0x00000200;
    internal const UInt32 MF_REMOVE       =0x00001000;

    internal const UInt32 MF_BYCOMMAND    =0x00000000;
    internal const UInt32 MF_BYPOSITION       =0x00000400;

    internal const UInt32 MF_SEPARATOR    =0x00000800;

    internal const UInt32 MF_ENABLED      =0x00000000;
    internal const UInt32 MF_GRAYED       =0x00000001;
    internal const UInt32 MF_DISABLED     =0x00000002;

    internal const UInt32 MF_UNCHECKED    =0x00000000;
    internal const UInt32 MF_CHECKED      =0x00000008;
    internal const UInt32 MF_USECHECKBITMAPS  =0x00000200;

    internal const UInt32 MF_STRING       =0x00000000;
    internal const UInt32 MF_BITMAP       =0x00000004;
    internal const UInt32 MF_OWNERDRAW    =0x00000100;

    internal const UInt32 MF_POPUP        =0x00000010;
    internal const UInt32 MF_MENUBARBREAK     =0x00000020;
    internal const UInt32 MF_MENUBREAK    =0x00000040;

    internal const UInt32 MF_UNHILITE     =0x00000000;
    internal const UInt32 MF_HILITE       =0x00000080;

    internal const UInt32 MF_DEFAULT      =0x00001000;
    internal const UInt32 MF_SYSMENU      =0x00002000;
    internal const UInt32 MF_HELP         =0x00004000;
    internal const UInt32 MF_RIGHTJUSTIFY     =0x00004000;

    internal const UInt32 MF_MOUSESELECT      =0x00008000;
    internal const UInt32 MF_END          =0x00000080;  /* Obsolete -- only used by old RES files */

    internal const UInt32 MFT_STRING      =MF_STRING;
    internal const UInt32 MFT_BITMAP      =MF_BITMAP;
    internal const UInt32 MFT_MENUBARBREAK    =MF_MENUBARBREAK;
    internal const UInt32 MFT_MENUBREAK       =MF_MENUBREAK;
    internal const UInt32 MFT_OWNERDRAW       =MF_OWNERDRAW;
    internal const UInt32 MFT_RADIOCHECK      =0x00000200;
    internal const UInt32 MFT_SEPARATOR       =MF_SEPARATOR;
    internal const UInt32 MFT_RIGHTORDER      =0x00002000;
    internal const UInt32 MFT_RIGHTJUSTIFY    =MF_RIGHTJUSTIFY;

    internal const UInt32 MFS_GRAYED      =0x00000003;
    internal const UInt32 MFS_DISABLED    =MFS_GRAYED;
    internal const UInt32 MFS_CHECKED     =MF_CHECKED;
    internal const UInt32 MFS_HILITE      =MF_HILITE;
    internal const UInt32 MFS_ENABLED     =MF_ENABLED;
    internal const UInt32 MFS_UNCHECKED       =MF_UNCHECKED;
    internal const UInt32 MFS_UNHILITE    =MF_UNHILITE;
    internal const UInt32 MFS_DEFAULT     =MF_DEFAULT;



Tips & Tricks:

Please add some!

Sample Code:

Public Class Form1

    Private Const SC_CLOSE As Integer = &HF060
    Private Const MF_GRAYED As Integer = &H1

    <DllImport("user32.dll", CallingConvention:=Runtime.InteropServices.CallingConvention.Cdecl)> _
    Private Shared Function GetSystemMenu(ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
    End Function

    <DllImport("user32.dll", CallingConvention:=Runtime.InteropServices.CallingConvention.Cdecl)> _
    Private Shared Function EnableMenuItem(ByVal hMenu As IntPtr, ByVal wIDEnableItem As UInteger, ByVal wEnable As UInteger) As IntPtr
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'Disable the form's 'X' button. Note that this does not disable the Alt+F4 functionality.
    EnableMenuItem(GetSystemMenu(Me.Handle, False), SC_CLOSE, MF_GRAYED)

    End Sub

End Class

Alternative Managed API:

Do you know one? Please contribute it!


Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

Access directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version