Ver Mensaje Individual
  #7
Antiguo 9 de enero de 2023, 14:12
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@fastpho, corregido tu código

Tienes que poner:

Código COBOL:
  1.  01  TOOLINFO TYPEDEF.
  2.          05  CBSIZE     PIC S9(9) COMP-5.
  3.          05  UFLAGS     PIC S9(9) COMP-5.
  4.          05  HWND           PIC S9(9) COMP-5.
  5.          05  UID            PIC S9(9) COMP-5.
  6.          05  TLEFT      PIC S9(9) COMP-5.
  7.          05  TTOP       PIC S9(9) COMP-5.
  8.          05  TRIGHT     PIC S9(9) COMP-5.
  9.          05  TBOTTON        PIC S9(9) COMP-5.
  10.          05  HINST      PIC S9(9) COMP-5.
  11.          05  LPSZTEXT       POINTER *>PIC X(50).  <-------------------------------------
  12.          05  LPARAM               PIC S9(9) COMP-5.
  13.  01  TI TYPE    TOOLINFO .
  14.  
  15.  01  TEXTO-TOOLTIP           PIC X(50).     *> aqui es donde vamos a meter texto

Código COBOL:
  1. *Cargo toolinfo
  2. *          
  3.       MOVE ZEROS TO ST-SIZE.
  4.       COMPUTE ST-SIZE = FUNCTION LENGTH(TI).
  5.      
  6.       MOVE  ST-SIZE    TO CBSIZE OF TI.                      
  7.       MOVE  18         TO UFLAGS OF TI. *>  TTF_CENTERTIP Or TTF_SUBCLASS
  8.       MOVE ST-CTRLHWND TO HWND   OF TI.
  9.       MOVE HINSTANCE   TO HINST  OF TI.
  10.       MOVE 0           TO UID    OF TI.
  11.       MOVE "PR" & X"00" TO TEXTO-TOOLTIP      *> <-------------------------------
  12.       MOVE FUNCTION ADDR(TEXTO-TOOLTIP) TO LPSZTEXT OF TI.  *> <-------------------------------
  13.      
  14.       MOVE RLEFT       TO TLEFT   OF TI.
  15.       MOVE RTOP        TO TTOP    OF TI.      
  16.       MOVE RRIGHT      TO TRIGHT  OF TI.      
  17.       MOVE RBOTTON     TO TBOTTON OF TI.  

LPSZTEXT debe ser de tipo POINTER porque no hay referencia explicita para pasarlo BY REFERENCE, así que estaba tomando los 50 bytes rompiendo completamente la estructura esperada, de ahí la violación de memoria.



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
Kuk is offline   Responder Con Cita