Introduction
This is a simple program which loads a picture to menu controls.
MenuItem controls don't have an
Image property to load an image. So the only way to do this is
by calling Windows API functions. The following are the API functions used.
All functions are from User32.dll.
[DllImport("user32.dll")]
public static extern IntPtr GetMenu(IntPtr hwnd);
[DllImport("user32.dll")]
public static extern IntPtr GetSubMenu(IntPtr hMenu,int nPos);
[DllImport("user32.dll")]
public static extern IntPtr GetMenuItemID(IntPtr hMenu, int nPos);
[DllImport("user32.dll")]
public static extern int SetMenuItemBitmaps(IntPtr hMenu, IntPtr nPosition,
int wFlags, IntPtr hBitmapUnchecked, IntPtr hBitmapChecked);
The Code
intptrMenu = GetMenu(this.Handle);
First get the pointer to the current form's menu.
intptrSubMenu = GetSubMenu(intptrMenu, 0);
Then get the pointer to the first menu's submenu list.
intptrMenuItemID = GetMenuItemID(intptrSubMenu, 0);
In the above code, 0 is the first
MenuItem in the submenu list.
Thus get the pointer to the first
MenuItem .
intRet = SetMenuItemBitmaps(intptrMenu, intptrMenuItemID, 0 ,intp, intp);
intp is the handle to a bitmap.
SetMenuItemBitmaps sets the image from the handle to
the
MenuItem. So when you run the code, no images are loaded.

Then when you hit the
LoadImage button, the images get loaded to the menu items.

Have Fun!