AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de gestión de procesos / Hilos, semáforos, señales y mutex
  • Presentación
  • Abrir una ventana desde un subproceso secundario a través de un diálogo de mensajes
  • Principio
  • Ejemplo
  • El método mencionado anteriormente se utiliza en el ejemplo WD Instant messaging.
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Un subproceso secundario no puede abrir directamente una ventana con las funciones estándar de WLanguage como: Open, Use, etc.
Sin embargo, es posible que necesite abrir una ventana a partir de un subproceso secundario. Por ejemplo, si se utiliza un subproceso para gestionar las llamadas entrantes, cuando se detecta la llamada, se puede abrir una ventana con las características de la persona que llama.
La solución consiste en abrir la ventana desde un código ejecutado por el subproceso principal.
Se pueden utilizar los siguientes métodos para ejecutar el código del subproceso principal desde un subproceso secundario:
  • Ejecutar un procedimiento global del proyecto o un procedimiento local de una ventana con la función ExecuteMainThread,
  • Ejecutar el evento "Solicitud para actualizar la visualización" de una ventana con la función RequestUpdateUI,
  • Establecer un diálogo a través de mensajes entre subprocesos (funciones PostMessage y Event).
Abrir una ventana desde un subproceso secundario a través de un diálogo de mensajes

Principio

Para abrir una ventana desde un subproceso secundario:
  1. Cuando el subproceso secundario quiere abrir una ventana, envía un mensaje al subproceso principal con la función PostMessage. Este mensaje indica al subproceso principal la ventana que debe abrirse, así como los parámetros necesarios para abrirla.
  2. El subproceso principal utiliza un evento específico, que corresponde a la solicitud para abrir una ventana. Cuando se produce este evento, el procedimiento WLanguage abre la ventana (con la función Open, por ejemplo) con los parámetros especificados.
Ejemplo

El método mencionado anteriormente se utiliza en el ejemplo WD Instant messaging.

El código de apertura de la ventana principal permite:
  • implementar un evento para gestionar la apertura de la ventana en el subproceso principal.
  • ejecutar los subprocesos secundarios.
// Implement an event
// to manage the opening of the "chat" window
gnEventID = Event("ChatOpening", "*.*", "ChatStart")
IF gnEventID = 0 THEN
// Error when implementing
// the event used to manage the "chat" window
Error("Unable to manage the window for chat opening", ErrorInfo())
// The application cannot operate without this event
EndProgram()
END

// Listen to the requests for connection and for presence tests
ThreadExécute("ThreadPresence", threadNormal, "ListenPresenceRequest")
ThreadExécute("ThreadRequest", threadNormal, "ListenConnectionRequest")
Por ejemplo, la ventana se abre en el código del procedimiento EscucharSolicitudInicioMensaje. Este procedimiento se ejecuta en un subproceso. El código utilizado para abrir la ventana desde el subproceso es el siguiente:
// Ask to open the "chat" window
PostMessage(Handle(WIN_Main),"ChatStart", FILE_CONTACT.CONTACTID, FILE_CONTACT.CONTACTID)
El mensaje "IniciarChat" se envía a la ventana principal (identificada por su Handle). Este mensaje contiene los parámetros que se deben pasar a la ventana. El mensaje es manipulado por el evento definido en el código de apertura de la ventana. Cuando se recibe el mensaje, el procedimiento "AbrirChat" se ejecuta automáticamente. Este procedimiento abre la ventana.
El código del procedimiento es el siguiente:
PROCEDURE ChatOpening(nParam,nContact)
OpenSister(WIN_Message, nContact)
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 21/06/2023

Señalar un error o enviar una sugerencia | Ayuda local