Nos Mostrara esta pequeña ventana y le damos OK
Ahora pasamos a realizar los primero pasos: File/New y selecionamos la ficha TARGET para creear nuestra libreria al cual le podemos asignar el mismo nombre.
Despues agregamos un menu: File/New y seleccionamos la ficha PB OBject y selecionamos Menú y le llamare m_mymenu el cual nos quedara de la siguiente manera:
MargeOption=
exclude!
MenuItemType=
MenuItemType=
MenuItemtypenormal!
Ahora procedemos a crear nuestra Ventana Donde se alojara nuestro menú: File/New y seleccionamos la ficha PB OBject y selecionamos Window
Nestra aplicacion quedara asi:
Ahora procedemos a Declarar Funciones externas:
aca estan por si no diferencian.
FUNCTION ulong LoadImageA(ulong hintance, string filename,uint utype,int x,int y,uint fload) LIBRARY "USER32.DLL"
FUNCTION boolean SetMenuItemBitmaps(ulong hmenu,uint upos,uint flags,ulong handle_bm1,ulong handle_bm2) LIBRARY "USER32.DLL"
FUNCTION int GetSystemMetrics( int nIndex ) LIBRARY "USER32.DLL"
FUNCTION ulong GetMenuItemID(ulong hMenu,uint uItem) LIBRARY "USER32.DLL"
FUNCTION int GetSubMenu(ulong hMenu,int pos) LIBRARY "USER32.DLL"
FUNCTION ulong GetMenu(ulong hWindow) LIBRARY "USER32.DLL"
FUNCTION boolean ModifyMenu(ulong hMnu, ulong uPosition, ulong uFlags, ulong uIDNewItem, long lpNewI) alias for ModifyMenuA LIBRARY "USER32.DLL"
Comenzando a Programar en la Ventana hacemos doble click en w_testmenu en el evento open.
Long ll_MainHandle
long ll_SubMenuHandle
integer li_MenuItemID
long ll_X
long ll_Y
long ll_BitmapHandleA
long ll_BitmapHandleB
// Win32 contants
// Win32 contants
Integer IMAGE_BITMAP = 0
Integer LR_LOADFROMFILE = 16
Integer SM_CXMENUCHECK = 71
Integer SM_CYMENUCHECK = 72
Integer MF_BITMAP = 4
Integer MF_BYCOMMAND = 0Integer MF_BYPOSITION = 1024
// asigna una varible al menú
// asigna una varible al menú
ll_MainHandle = GetMenu(Handle(this))
// asigna a la variable el primer artículo de menú
// asigna a la variable el primer artículo de menú
ll_SubMenuHandle = GetSubMenu(ll_MainHandle,0)
// Cargando las imágenes en sus tamaños originales
// Cargando las imágenes en sus tamaños originales
ll_BitmapHandleA = LoadImageA(0,'ir.bmp',0,0,0,LR_LOADFROMFILE)
ll_BitmapHandleB = LoadImageA(0,'home.bmp',0,0,0,LR_LOADFROMFILE)
// consiga la identificación del menú del primer artículo del submenu
// consiga la identificación del menú del primer artículo del submenu
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,0)
ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapHandleA)
// consiga la identificación del menú del primer artículo del submenu
// consiga la identificación del menú del primer artículo del submenu
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,1)
ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapHandleB)
// onsiga a manija el tercer artículo de menú del submenu
// onsiga a manija el tercer artículo de menú del submenu
ll_SubMenuHandle = GetSubMenu(ll_SubMenuHandle,2)
// obtener la identificación del menú del primer artículo del submenu
// obtener la identificación del menú del primer artículo del submenu
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,0)ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapHandleA)
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,1)ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapHandleB)
// de nuevo al inicio// Conseguir la variable del segundo submenu
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,1)ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapHandleB)
// de nuevo al inicio// Conseguir la variable del segundo submenu
ll_SubMenuHandle = GetSubMenu(ll_MainHandle,1)
// Consiga los tamaños para los cuadros, utilice el api de windows para los tamaños de las BITMAP
// Consiga los tamaños para los cuadros, utilice el api de windows para los tamaños de las BITMAP
ll_x = GetSystemMetrics(SM_CXMENUCHECK)
ll_y = GetSystemMetrics(SM_CYMENUCHECK)
// Cargue las imágenes usando las dimensiones para el estado comprobado de las imagenes
// Cargue las imágenes usando las dimensiones para el estado comprobado de las imagenes
ll_BitmapHandleA = LoadImageA(0,'ir.bmp', IMAGE_BITMAP ,ll_x,ll_y,LR_LOADFROMFILE)ll_BitmapHandleB = LoadImageA(0,'home.bmp',IMAGE_BITMAP ,ll_x,ll_y,LR_LOADFROMFILE)
SetMenuItemBitmaps(ll_SubMenuHandle,0,MF_BYPOSITION,ll_BitmapHandleA,ll_BitmapHandleB)SetMenuItemBitmaps(ll_SubMenuHandle,1,MF_BYPOSITION,ll_BitmapHandleB,ll_BitmapHandleA)
// Consiga la variable del tercer artículo de menú del submenu
SetMenuItemBitmaps(ll_SubMenuHandle,0,MF_BYPOSITION,ll_BitmapHandleA,ll_BitmapHandleB)SetMenuItemBitmaps(ll_SubMenuHandle,1,MF_BYPOSITION,ll_BitmapHandleB,ll_BitmapHandleA)
// Consiga la variable del tercer artículo de menú del submenu
ll_SubMenuHandle = GetSubMenu(ll_SubMenuHandle,2)
SetMenuItemBitmaps(ll_SubMenuHandle,0,MF_BYPOSITION,ll_BitmapHandleA,ll_BitmapHandleB)SetMenuItemBitmaps(ll_SubMenuHandle,1,MF_BYPOSITION,ll_BitmapHandleB,ll_BitmapHandleA)
SetMenuItemBitmaps(ll_SubMenuHandle,0,MF_BYPOSITION,ll_BitmapHandleA,ll_BitmapHandleB)SetMenuItemBitmaps(ll_SubMenuHandle,1,MF_BYPOSITION,ll_BitmapHandleB,ll_BitmapHandleA)
//** fin de la Programacion***//
En la aplicacion hacemos doble click
open(w_testmenu)
Espero que lo disfruten, Cualquier duda de contactenme systemgds@hotmail.com,