[DllImport("user32", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool InsertMenu(IntPtr hmenu, uint position, uint flags,
uint item_id, [MarshalAs(UnmanagedType.LPTStr)]string item_text);
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Friend Shared Function InsertMenu(ByVal hMenu As IntPtr, ByVal uPosition As Integer,
ByVal uFlags As Integer, ByVal uIDNewItem As Integer,
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpNewItem As String) As Boolean
End Function
None.
Be sure to always set SetLastError in your Win32 imports. The sample code below shows how you can make use of it.
Without the CharSet attribute flag, the WinAPI may not know which underlying InsertMenu to call (the A version or the W version).
if (!InsertMenu(hmenu, position++,
(uint)(MF.BYPOSITION | MF.SEPARATOR), id++, "Menu Item"))
throw new Win32Exception(Marshal.GetLastWin32Error());
None.