Obtener el Handle (HWND) de un control
No es muy difícil obtener el Handle en PowerCOBOL v3:
COBOL Código:
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-HWND-P PIC S9(9) COMP-5.
01 WS-HWND-C PIC S9(9) COMP-5.
PROCEDURE DIVISION.
CALL "GetActiveWindow" WITH STDCALL
MOVE PROGRAM-STATUS TO WS-HWND-P
CALL "GetDlgItem" WITH STDCALL USING BY VALUE WS-HWND-P
BY VALUE 1. *> Id orden del control
MOVE PROGRAM-STATUS TO WS-HWND-C
Si queremos buscar antes el control por su texto, hacemos:
COBOL Código:
WORKING-STORAGE SECTION.
01 WS-TEXTO PIC X(50).
01 WS-HWND-P PIC S9(9) COMP-5.
01 WS-ID PIC S9(9) COMP-5.
PROCEDURE DIVISION.
CALL "GetDlgItemTextA" WITH STDCALL USING BY VALUE WS-HWND-P
BY VALUE WS-ID
BY REFERENCE WS-TEXTO
BY VALUE 50
Donde WS-ID es el orden del control (1, 2, 3 etc.) y obtenemos su texto en WS-TEXTO. Cuidado que viene un con X"00" al final (si no me equivoco).