PDA

Ver la Versión Completa : [PowerCOBOL v3] Obtener el Handle (HWND) de un control


Kuk
21 de diciembre de 2015, 21:53
No es muy difícil obtener el Handle en PowerCOBOL v3:


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:


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).