Gracias Rene muy completa tu exposicion, por lo que veo hay que pensar
en otra via mmmm....
Rene Flores escribió:
> Andres:
>
>> y me pregunto si es posible desde xailer en modo GUI abrir una ventana
>> en modo consola y ejecutar un codigo clipper tradicional puro y duro?
>
> Si deseas que el programa Gráfico en Xailer controle el despliegue de
> datos de una ventana de terminal, y que la ventana de terminal sea una
> MDICHILD o un formulario "hermano" del programa Xailer, hasta donde he
> probado no es posible y creo que el tema viene por el lado de como el
> sistema operativo maneja las aplicaciones.
>
> La unica forma de ejecutar otro programa MS-DOS desde Xailer sería
> haciendo un WinExec() desde el programa Xailer a un EXE externo
>
> Cuando trabajas con el modo híbrido el programa que se crea
> originalmente es un programa en (x)Harbour para modo texto, porque estás
> cargando la LIB GTGUI.LIB (o GTWIN, tengo un lío con eso....) de
> (x)Harbour, de hecho, si por error cargas esta lib en un programa Xailer
> para Windows, veras como aparece una ventana Ms-DOS negra e
> inmediatamente después se ejecuta el programa Windows.
>
> El programa creado de esta manera, es decir primeramente para modo
> Texto, puede usar componentes de Xailer porque lleva incluída la
> XAILER.LIB, pero no es porque el programa pueda correr en 2 plataformas
> distintas.
>
> La ventana de texto es una aplicacion que va despachando su propio juego
> de mensajes al nucleo de Windows, cuando lanzas un componente visual,
> llamese formulario, Msg....() o "algo" de Xailer/Windows, estos corren
> en su propia ventana y despachan sus propios mensajes,
> independientemente de la ventana de consola, de hecho la ventana de
> consola recibe los mensajes, porque es la ventana que ha lanzado la
> ventana gráfica, pero los ignora porque no los puede procesar y estos
> pasan al núcleo de Windows.
>
> Los mensajes generados por los formularios o componentes visuales son
> distintos a los que despacha la ventana de modo texto, por eso hay que
> hacer ShowModal() al momento de mostrar un componente gráfico, esto
> detiene momentaneamente la ejecución de la ventana de terminal y deja
> que la ventana Windows trabaje a sus anchas, sin embargo, mientras la
> ventana de Windows está corriendo, NO HAY COMUNICACION CON LA VENTANA
> MS_DOS.
>
> Se usa el evento ONINITIALIZE del formulario para configurarlo y obtener
> valores del programa MS-DOS, posterioremente se despliega en pantalla el
> formulario y en ese momento deja de haber comunicacion entre las 2
> terminales, la windows y la consola, por ello es importante el ShowModal()
>
> Si no haces un showmodal() entonces tienes 2 aplicaciones corriendo,
> porque inmediatamente despues de desplegar el formulario, el flujo del
> programa regresa a la ventana de MS-DOS y la ventana grafica sigue su
> ejecución, pero no hay comunicación entre ambas porque el programa en
> modo consola no puede controlar entornos MDI como lo hace un programa
> Windows.
>
> Por el contrario cuando la ventana grafica con SHOWMODAL() ha dejado de
> funcionar, entonces el programa MS-DOS si puede "recoger" los datos
> procesados por ella, porque Xailer maneja "objetos presistentes" es
> decir que lo objetos siguen existiendo, junto con sus datas aunque
> visiblemnte no se vean.
>
> Hacer lo contrario es muy complicado, porque para empezar, la ventana de
> terminal no es un objeto, por lo tanto no es manipulable desde un
> programa Xailer.
>
> Saludos
>
> Rene Flores
>
http://www.ciber-tec.com