Ver la Versión Completa : [Sintaxis] Modificar El Font en un Menu
Fabio
18 de octubre de 2021, 15:30
Estimados Companeros de forum es possible modificar el tamaño del font de un menu he buscado como hacerlo y no se.
Gracias.
Kuk
18 de octubre de 2021, 16:07
@Fabio, tienes que pasar por WinAPI.
Tienes que obtener el Handle del Menú: GetMenu function (winuser.h) - Win32 apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmenu)
Luego recuperar las propiedades del menú: GetMenuInfo function (winuser.h) - Win32 apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmenuinfo)
Lo tienes que hacer en la siguiente estructura de datos: MENUINFO (winuser.h) - Win32 apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-menuinfo)
Luego cambias el valor de cbSize y vuelves a setear el menú: SetMenuInfo function (winuser.h) - Win32 apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setmenuinfo)
Fabio
19 de octubre de 2021, 18:45
Muchas Gracias Kuk pero tengo un problema y es que no se utilizar las api donde me pierdo es en definer los parametros de entrada de la function.
Kuk
21 de octubre de 2021, 12:05
@Fabio,
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HWND-SHEET PIC S9(9) COMP-5.
01 HWND-MENU PIC S9(9) COMP-5.
01 MENUINFO.
05 cbSize PIC S9(9) COMP-5.
05 fMask PIC S9(9) COMP-5.
05 dwStyle PIC S9(9) COMP-5.
05 cyMax PIC 9(9) COMP-5.
05 hbrBack PIC S9(9) COMP-5.
05 dwContextHelpID PIC S9(9) COMP-5.
05 dwMenuData PIC 9(9) COMP-5.
PROCEDURE DIVISION.
CALL "GetActiveWindow" WITH STDCALL *> User32.lib
MOVE PROGRAM-STATUS TO HWND-SHEET
CALL "GetMenu" WITH STDCALL USING BY VALUE HWND-SHEET *> User32.lib
MOVE PROGRAM-STATUS TO HWND-MENU
CALL "GetMenuInfo" WITH STDCALL USING BY VALUE HWND-MENU
BY REFERENCE MENUINFO *> User32.lib
ADD 5 TO cbSize *> <----- aqui es donde modificamos el tamaño
CALL "SetMenuInfo" WITH STDCALL USING BY VALUE HWND-MENU
BY REFERENCE MENUINFO *> User32.lib
No olvides de añadir al proyecto la User32.lib
---------- Post añadido el 21 de octubre de 2021 a las 11:08 ----------
@Fabio, ya nos dirás si ha funcionado ;)
Fabio
23 de octubre de 2021, 15:14
Kuk disculpa la demora pero tenia problemas con mi internet y si lo probe y me devuelve un valor handle del menu pero la function getmenuinfo no me retorna ningun valor en los parametron.
Kuk
24 de octubre de 2021, 01:47
@Fabio, pues me he equivocado macho. Es lo que pasa siempre que andamos con prisas, mea culpa amigo.
Por lo pronto las funciones GetMenuInfo y SetMenuInfo sólo aparecen en Windows 10. Con lo cual, no existen en la User32.lib que trae PowerCOBO:
Minimum supported client |Windows 2000 Professional [desktop apps only]
Minimum supported server |Windows 2000 Server [desktop apps only]
Target Platform |Windows
Header |winuser.h (include Windows.h)
Library |User32.lib
DLL |User32.dll
API set |ext-ms-win-ntuser-menu-l1-1-3 (introduced in Windows 10, version 10.0.14393)
Además, según me he documentado, podemos jugar con varias cosas, pero no con el tamaño del texto, porque este viene de los parámetros generales de Windows...
La única opción es cambiarlo a nivel de parámetros de Windows o pasar por OwerDraw (dibujarlo en "custom"): Change System Menu Text Size (https://forums.codeguru.com/showthread.php?460155-Change-System-Menu-Text-Size)
Fabio
24 de octubre de 2021, 17:04
Kuk una ultima pregunta y perdoname la insistencia he leido un post tuyo titulado call a cualquier DLL sin lib ni loadlibrary en powercobol podria ser esta una possible solucion?.
saludos,
Kuk
24 de octubre de 2021, 22:00
@Fabio, efectivamente se puede hacer esto añadiendo las líneas correspondientes en el fichero COBOL85.CBR de la manera siguiente:
[SHEET1.Entry]
GetMenuInfo=User32.dll
SetMenuInfo=User32.dll
Lo que pasa es que en cuanto al asunto de cambiar el tamaño de la fuente del menú, no se puede hacer.
O lo cambias en los parámetros de Windows, o nos vamos a las historias "OwerDraw" que es dibujarlo tu mismo mediante la API de Windows.
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.