Ver Mensaje Individual
  #5
Antiguo 13 de marzo de 2015, 09:17
Kuk
Administrador
Última Actividad 03.10.2026 00:00
Posts Posts: 2.500
Likes enviados Enviados: 1038
Likes recibidos Recibidos: 1207

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:
  1. Call MyWndProc USING hWnd
  2. Call MyWndProc USING Message
  3. Call MyWndProc USING wParam
  4. 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:
  1. Sea la CALL-CONVENTION no es realmente la adecuada (pero es menos probable)
  2. 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...



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

Última edición por Kuk fecha: 13 de marzo de 2015 a las 22:56. Razón: Post añadido
Kuk is offline   Responder Con Cita