Rapinto, ando un poco mal de tiempo, pero lo que he pensafo de probar es en modo OO COBOL. Es decir, crear aplicacion con la opcion 2. Ahi a lo mejor funciona...
Lo que no entiendo es que si llamamos API-s con STDCALL bien, significa que la CALL-CONVENTION es correcta para WinAPI. Pero (!!!), al ser llamada MyWndProc, recibe parametros pero no todos, y en campos diferentes. Lo que he podido detectar ha sido que a veces (no siempre), es como si por cada campo hay 1 llamada. Es decir:
- Call MyWndProc USING hWnd
- Call MyWndProc USING Message
- Call MyWndProc USING wParam
- Call MyWndProc USING lParam
En lugar de llamarse 1 vez con los 4:
- Call MyWndProc USING hWnd, Message, wParam, lParam
Lo que a mi me dice que:
- Sea la CALL-CONVENTION no es realmente la adecuada (pero es menos probable)
- Sea que CALLBACK no funciona en procedres COBOL, al menos en modo "1 - COBOL85". Por eso quiero probar con modo "2 - OO COBOL"
Añadido despues de 13 horas 38 minutos
Rui, he encontrado esto en el NetCOBWinUsersGuide.pdf:
Cita:
|
❞
NOTES:
When calling COBOL programs from COBOL programs, you cannot pass parameters
with “USING BY VALUE.”
|
El problema no es CALL-CONVENTION. El problema es BY VALUE. En cualquier WITH, sea C, STDCALL o COBOL (sin nada), si pasas valor BY VALUE - el programa se cierra con error...