|
Administrador
![]()
|
Sabemos que existen varios modos de pasar parámetros en COBOL:
Ahora, en C (y lógicamente en WinAPI, escrito en C), hay funciones que reciben parámetros BY VALUE. Por ejemplo una de las funciones más famosas que es WNDPROC: Código CPP:
Estos parámetros entran por valor, o sea BY VALUE. Quiere decir que el que llame a esta función, lo que pase como parámetros, en ésta función se recibe tal cual (el valor) y no la dirección en memoria del mismo. Lo que pasa es que el compilador de Fujitsu dice oficialmente que NO TRABAJA con parámetros BY VALUE en entrada. Esto limita a que no podamos definir funciones que reciban valores BY VALUE en la LINKAGE SECTION, lo cual significa que no podemos hacer subclassing, es decir sobrecargar funciones existentes de WinAPI porque no somos capaces de recibir los parámetros como lo hace C. Pero lo desmiento totalmente. Hoy he conseguido hacerlo. Y esto quiere decir que podría reescribir toda la WinAPI en Cobol de Fujitsu sin limitación alguna. Estaba echando un ojo al tema de @Josber: [Información] ToolTipText multilinea He mirado ejemplos para hacerlo, dicen de utilizar la función WinAPI siguiente: EnumWindows function (winuser.h) - Win32 apps | Microsoft Learn Esta función necesita pasar como parámetro otra función definida por nosotros, a la que le va a pasar el HWND de toda ventana que encuentre, y lo hará BY VALUE, cosa que el compilador de Fujitsu no soporta (de forma nativa). Pero le he engañado y lo he hecho funcionar de la siguiente manera: Creamos un fichero CallBackFunc.cbl (en el directorio, por fuera, en el explorador de Windows) y lo insertamos en el proyecto de PowerCOBOL. En propiedades añadimos la directiva ALPHAL(WORD). El contenido del fichero creado es el siguiente: Código COBOL:
Luego en cualquier lado, en mi ejemplo en el evento Click de un botón, le metemos este código: Código COBOL:
¡Y listo! Tenemos funcionalidad nativa de C/WinAPI con el compilador de Fujitsu!!! Al ejecutar el programa, se ve el valor 26 que le paso en el evento del botón, lo hago BY VALUE y es correctamente recuperado! NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||