Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
  COBOL Foro > IDE-s y compiladores COBOL > Cocina Casera > Cocina PowerCOBOL + WinAPI
Cocina PowerCOBOL + WinAPI Código WinAPI en PowerCOBOL
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Información] Proteccion de Software fastpho PowerCOBOL (ActiveX, v4 - v11) 9 3 de junio de 2018 21:22
[Herramienta] DASERP - Software en Windev Dasije WinDev 5 22 de marzo de 2017 12:33
[Petición] OCX Botón redondo con imagen Roger Controles y Componentes (DLL/OCX) 0 23 de octubre de 2016 23:53
[Compilador] Error 3 al/después de hacer LINK Kuk PowerCOBOL V3L10 (Win32) 4 15 de enero de 2016 20:41
[Sintaxis] Botón derecho del ratón Josber PowerCOBOL (ActiveX, v4 - v11) 4 12 de febrero de 2015 15:29
Respuesta
 
Herramientas

  #1
Antiguo 19 de mayo de 2015, 16:19
IDENTIFICATION DIVISION
Rapinto
 Gran amigo del Foro y Guru de COBOL
Activista del Foro: Activista del Foro - Razón: ¡Gracias!  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por ayudar mucho a los foreros  Guru de los Gurus: Por solidos y amplios conocimientos - Razón: Por saber demasiado! 
ENVIRONMENT DIVISION
Avatar de Rapinto
DATA DIVISION
febrero 2015
Porto
29.01.2018 19:23
PROCEDURE DIVISION
Posts: 246
Enviado: 19
Recibido: 221
Soluiones: 47
Reputación: 16
Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road
Capas Hacer Click en un botón por Software

Ás vezes necessitamos de executar o código que está num botão, sem o operador saber.

Por exemplo, para correr um programa automaticamente, sem intervenção do operador, mas utilizando o mesmo programa com interface com o operador.

Com este código, podemos simular que foi pressionado um botão (ou CMCommand1).

Código COBOL:
  1.  @OPTIONS NOALPHA
  2. *****************************************************************
  3. *  Copyright (c) 2005 R.P.S.
  4. *
  5. *  Last Modified:    Jan 2005.
  6. *****************************************************************
  7.  IDENTIFICATION DIVISION.
  8.  PROGRAM-ID.    INVOKECLICK.
  9.  AUTHOR.        Rui Pinto - MAR 2005.
  10. *-----------------------------------------------------------------
  11.  ENVIRONMENT DIVISION.
  12.  CONFIGURATION SECTION.
  13.  SPECIAL-NAMES.
  14.  INPUT-OUTPUT SECTION.
  15.  FILE-CONTROL.
  16. *-----------------------------------------------------------------
  17.  DATA DIVISION.
  18.  FILE SECTION.
  19.  WORKING-STORAGE SECTION.
  20. *
  21. *
  22.  01  MSGFUNCTION                   PIC S9(009)    COMP-5  VALUE ZERO.
  23.  01  MSGPARAM1                     PIC S9(009)    COMP-5  VALUE ZERO.
  24.  01  MSGPARAM2                     PIC S9(009)    COMP-5  VALUE ZERO.
  25.  LINKAGE SECTION.
  26.  01  WS-HANDLER                    PIC S9(009)    COMP-5.
  27.  PROCEDURE DIVISION USING WS-HANDLER.
  28.  MAIN SECTION.
  29.  MAIN-00.
  30.       IF WS-HANDLER = 0
  31.            CALL "GetFocus" WITH STDCALL RETURNING WS-HANDLER.
  32. ****   MOUSE DOWN
  33.       MOVE 513 TO MSGFUNCTION.
  34.       MOVE 0 TO MSGPARAM2.
  35.       MOVE 0 TO MSGPARAM1.
  36.       CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLER
  37.                                              BY VALUE MSGFUNCTION
  38.                                              BY VALUE MSGPARAM1
  39.                                              BY VALUE MSGPARAM2.
  40. ****   MOUSE UP
  41.       MOVE 514 TO MSGFUNCTION.
  42.       MOVE 0 TO MSGPARAM2.
  43.       MOVE 0 TO MSGPARAM1.
  44.       CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLER
  45.                                              BY VALUE MSGFUNCTION
  46.                                              BY VALUE MSGPARAM1
  47.                                              BY VALUE MSGPARAM2.
  48. ****   BUTTON STATE
  49.       MOVE 243 TO MSGFUNCTION.
  50.       MOVE 0 TO MSGPARAM2.
  51.       MOVE 0 TO MSGPARAM1.
  52.       CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLER
  53.                                              BY VALUE MSGFUNCTION
  54.                                              BY VALUE MSGPARAM1
  55.                                              BY VALUE MSGPARAM2.
  56.  
  57.  MAIN-99.
  58.  END PROGRAM INVOKECLICK.
  59. *   INVOKE CMCOMMAND2 "SETFOCUS". FOCUS NO BOTAO A CLICKAR
  60. *   CALL "INVOKECLICK".    
  61. *   INVOKE CMCOMMAND1 "SETFOCUS". FOCUS PARA OUTRO OBJECTO

Espero que ajude alguém.
Un saludo,
Rui Pinto
Rapinto no ha iniciado sesión   Responder Con Cita
Han dicho Gracias: 3
Eslopes ( 4 de diciembre de 2015), Galileo (22 de diciembre de 2015), Xavier ( 2 de febrero de 2016)
  #2
Antiguo 22 de diciembre de 2015, 08:39
IDENTIFICATION DIVISION
Galileo
 Novato Junior
ENVIRONMENT DIVISION
Avatar de Galileo
DATA DIVISION
junio 2015
Murcia
22.01.2021 10:39
PROCEDURE DIVISION
Posts: 38
Enviado: 20
Recibido: 36
Soluiones: 8
Reputación: 0
Galileo is on a distinguished road Galileo is on a distinguished road Galileo is on a distinguished road
Predeterminado

Entiendo que estás hablando de un programa hecho en PowerCOBOL. En PC 3.0 yo lo que hago es poner en el botón sólo la llamada a un subprograma que estará en el evento PROCEDURE del form.

Por ejemplo, en el botón estaría un código como éste:

Código COBOL:
  1. CALL "Imprimir"

El subprograma "Imprimir" estaría en la PROCEDURE. Si yo quiero imprimir sin pulsar el botón, símplemente llamo a dicho subprograma.

Si el programa es nuevo creo que es una buena práctica proceder de esta manera. Pero si el programa ya está hecho y es grande, entonces tu código sí es de utilidad. Y me resulta muy ilustrativo sobre la forma de invocar las funciones de la API de Windows.
Galileo no ha iniciado sesión   Responder Con Cita
  #3
Antiguo 22 de diciembre de 2015, 23:19
IDENTIFICATION DIVISION
Rapinto
 Gran amigo del Foro y Guru de COBOL
Activista del Foro: Activista del Foro - Razón: ¡Gracias!  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por ayudar mucho a los foreros  Guru de los Gurus: Por solidos y amplios conocimientos - Razón: Por saber demasiado! 
ENVIRONMENT DIVISION
Avatar de Rapinto
DATA DIVISION
febrero 2015
Porto
29.01.2018 19:23
PROCEDURE DIVISION
Posts: 246
Enviado: 19
Recibido: 221
Soluiones: 47
Reputación: 16
Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road Rapinto is on a distinguished road
Predeterminado

Galileo,

Também utilizo esse forma de programar no PowerCobol 9.0
(No botão tem apenas o "call" e a rotina esta fora).
Tens razão, é a melhor maneira de programar.

Este meu exemplo tem mesmo como objectivo, dar uma ideia de como utilizar as API's do Windows.

Un Saludo e Feliz Navidad

Rui Pinto
Rapinto no ha iniciado sesión   Responder Con Cita
Respuesta


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado



La franja horaria es GMT +1. Ahora son las 00:45.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2021, Jelsoft Enterprises Ltd.