Hallo
Auf diese Funktionen bin ich gester dann auch noch gestossen.
Jedoch will das ganze trotzdem nicht wirklich.
Meine WinAPI Deklaration sehen zZt folgendermassen aus:
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern bool EnableMenuItem(HandleRef hMenu, uint UIDEnabledItem, uint uEnable);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetMenu(HandleRef hWnd);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetSubMenu(HandleRef hMenu, int nPos);
[DllImport("user32.dll")]
static extern int GetMenuString(IntPtr hMenu, uint uIDItem,
[Out, MarshalAs(UnmanagedType.LPStr)] StringBuilder lpString, int nMaxCount, uint uFlag);
[DllImport("user32.dll")]
static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
[DllImport("user32.dll")]
static extern int GetMenuItemCount(IntPtr hMenu);
[DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern bool AppendMenu(IntPtr hMenu, MenuFlags uFlags, uint uIDNewItem, string lpNewItem);
Hier bekomme ich jeweils das Handle und das HandleRef zum jeweiligen MenuStrip Control:
MenuRef = new HandleRef(null, returnControlHandle(tv1.SelectedNode.Index, tv1.SelectedNode.Parent.Index)); //Get the HandleRef
SubMenuRef = new HandleRef(null, returnControlHandle(tv1.SelectedNode.Index, tv1.SelectedNode.Parent.Index));
SubMenu = GetSubMenu(SubMenuRef, 1);
Menu = GetMenu(MenuRef);
Nun würde ich beispielsweise gerne die erste Ebene des Menus deaktivieren:
EnableMenuItem(MenuRef, 0, (uint)MenuFlags.BYPOSITION | (uint)MenuFlags.ENABLED); //Disable menuitem
Jedoch passiert rein gar nichts.
Ich benutze folgende enum:
enum MenuFlags : uint
{
BYCOMMAND = 0x0000,
BYPOSITION = 0x0400,
SEPARATOR = 0x0800,
ENABLED = 0x0000,
GRAYED = 0x0001,
UNCHECKED = 0x0000,
CHECKED = 0x0008,
STRING = 0x0000,
OWNERDRAW = 0x0100,
POPUP = 0x0010,
MENUBARBREAK = 0x0020,
MENUBREAK = 0x0040,
UNHILITE = 0x0000,
HILITE = 0x0080
}
Gruss,
Regenwurm