Pregunta: | 41736 - ¿COMO AGREGAR IMAGENES AL LAS OPCIONES DEL MENU? |
Autor: | Omar Enrique Molero Urdaneta |
como hacer para que cuando se haga click en cualquier modulo del menu en cada una de las opcion aparesca un icono al lado de la misma......Ej. si en la opcion de menu "Salir" tenga el icono de la puerta con la flecha apuntando hacia ella |
Respuesta: | Cecilia Colalongo |
Fijate con esto, tienes que usar algunas API de menús como SetMenuItemBitmaps:
PUBLIC oform1 oform1=NEWOBJECT("form1") oform1.Show RETURN DEFINE CLASS form1 AS form ShowWindow = 2 DoCreate = .T. AutoCenter = .T. Caption = "Pictures in menu" ZoomBox = .F. Name = "Form1" PROCEDURE createmenu LPARAMETERS oFormRef, getMenuName, lUniquePopups, parm4, parm5, parm6, parm7, parm8, parm9 LOCAL cMenuName, nTotPops, a_menupops, cTypeParm2, cSaveFormName IF TYPE("m.oFormRef") # "O" OR ; LOWER(m.oFormRef.BaseClass) # 'form' OR ; m.oFormRef.ShowWindow # 2 MESSAGEBOX([This menu can only be called from a Top-Level form. Ensure that your form's ShowWindow property is set to 2. Read the header section of the menu's MPR file for more details.]) RETURN ENDIF m.cTypeParm2 = TYPE("m.getMenuName") m.cMenuName = SYS(2015) m.cSaveFormName = m.oFormRef.Name IF m.cTypeParm2 = "C" OR (m.cTypeParm2 = "L" AND m.getMenuName) m.oFormRef.Name = m.cMenuName ENDIF IF m.cTypeParm2 = "C" AND !EMPTY(m.getMenuName) m.cMenuName = m.getMenuName ENDIF DIMENSION a_menupops[1] IF TYPE("m.lUniquePopups")="L" AND m.lUniquePopups FOR nTotPops = 1 TO ALEN(a_menupops) a_menupops[m.nTotPops]= SYS(2015) ENDFOR ELSE a_menupops[1]="file" ENDIF DEFINE MENU (m.cMenuName) IN (m.oFormRef.Name) BAR DEFINE PAD _0x20fnux8 OF (m.cMenuName) PROMPT "File" COLOR SCHEME 3 ; KEY ALT+F, "" ON PAD _0x20fnux8 OF (m.cMenuName) ACTIVATE POPUP (a_menupops[1]) DEFINE POPUP (a_menupops[1]) MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF (a_menupops[1]) PROMPT "Open" DEFINE BAR 2 OF (a_menupops[1]) PROMPT "\-" DEFINE BAR 3 OF (a_menupops[1]) PROMPT "Exit" ON SELECTION BAR 3 OF (a_menupops[1]) quit ACTIVATE MENU (m.cMenuName) NOWAIT IF m.cTypeParm2 = "C" m.getMenuName = m.cMenuName m.oFormRef.Name = m.cSaveFormName ENDIF ENDPROC PROCEDURE addpictures DECLARE INTEGER FindWindow IN win32api STRING,STRING DECLARE INTEGER GetMenu IN win32api INTEGER DECLARE INTEGER GetSubMenu IN win32api INTEGER,INTEGER DECLARE INTEGER LoadImage IN win32api INTEGER,STRING,INTEGER,INTEGER,INTEGER,INTEGER DECLARE INTEGER SetMenuItemBitmaps IN win32api INTEGER,INTEGER,INTEGER,INTEGER,INTEGER DECLARE INTEGER GetMenuItemID IN win32api INTEGER,INTEGER DECLARE INTEGER ModifyMenu IN win32api INTEGER,INTEGER,INTEGER,INTEGER,string DECLARE INTEGER DrawMenuBar IN win32api INTEGER LOCAL ctitle,HWND,mhandle,shandle,lcname1,lcname2,nretval1, nretval2,menuid1,menuid2,lcDirectory ctitle = this.caption lcDirectory = CURDIR() HWnd = findwindow(0,m.ctitle) mhandle = getmenu(m.HWND) shandle = getsubmenu(m.mhandle,0) lcname1 = lcDirectory+"Open.Bmp" nretval1 = loadimage(0,m.lcname1,0,13,13,32768+16+2) menuid1 =getmenuitemid(m.shandle, 0) menuid2 =getmenuitemid(m.shandle, 1) setmenuitembitmaps(m.shandle, m.menuid1,0,m.nretval1,m.nretval1) modifymenu(m.mhandle, m.menuid1,0, m.menuid1,"&Open F2") ENDPROC PROCEDURE Init this.createmenu(this,.t.) this.addpictures() ENDPROC ENDDEFINE |