LOUIS wrote:al compilar mis programas con la 3.1.5 que por cierto dicen que es estable, no me funcionan bien

crea el exe y entra a la primera pantalla de presentación en modo gui, de ahí debe pasar a unos procesos internos en modo console y luego volver a presentar una pantalla gui pero no llega a esta y termina abruptamente a pesar de quedarse corriendo en memoria
Si ahora entiendo que lo que buscabas es em MIX (console y gui). Y creo que tu no te has dado cuenta que yo no sabia de este "pequeño" detalle. Porque si te fijas mi ejemplo, no verás ninguna instruccion en GUI, al contrário, estoy forzando la salida del interface con:
REQUEST HB_GT_WIN_DEFAULT
Ni tampoco disponibilizé el
#include <hmg.ch> que es responsable por adicionar toda la biblioteca gráfica de HMG.
Asi que tenemos que ver caso a caso.
Cuando hablamos de nuevas versiones, algunos piensan que los cambios solo suceden en HMG, pero en verdad no es asi !
El Harbour tambien cambió en sus versiones la forma de alternar la salidas del interface, tambien cambiamos para UNICODE no utilizando los codepages. Entonces es algo un tanto complejo.
Yo no sé si conseguiria manter um sistema en MIX. No es imposible creo yo, pero que es trabajoso si puedo afirmar.
Creo que esa alternancia de una seccion console para otra gráfica tiene que ser tratada atravéz de llamados en C con sus respectivos HANDLES.
Intenté copiando C:\hmg.3.1.5\SOURCE\c_windows.c <---> dentro de C:\hmg.3.0.46\SOURCE\c_windows.c pero no funcionó
No, eso jamás iria funcionar ! Esta pra´ctica nunca se debe ejecutar de esa forma.
Lo que quize decir en mi mensaje anterior, es que puedes extraer el código en C que habian publicado e inserirlo en tu código, no en la biblioteca HMG de la version antigua.
Probé bajando la versión 3.2 (aunque tiene 2 parches que bajarse para corregir ciertos bugs) y con esta me funciona bien mi programa console-gui aunque noto ciertas cosillas que la 3.0.46 superó a la 3.0.39 como el pase de foco de una pantalla a otra, y también cuando pido un reporte por pantalla lanza primero una leyenda en modo console en la parte baja de la pantalla, pero luego presenta el informe.
Como expliqué antes, es trabajoso esta alternancia. Son dos ambientes completamente distintos. Yo pensaria en trabajar en un solo ambiente: o en console o en gráfico.
No sé que hacer, si quedarme con la 3.0.46 aunque no pueda direccionar la console-pantalla
Te paso el código que faltaba para que lo insieras en tu código y puedas compilarlo en 3.0.46.
Code: Select all
/* Compiled with hmg.3.0.46 version */
#define HWND_TOPMOST -1
#define SWP_NOSIZE 0x0001
#define SWP_DRAWFRAME 0x0020
REQUEST HB_GT_WIN_DEFAULT
Function Main ()
Local hWnd:=GetConsoleWindowHandle()
SetMode(25,80)
SetWindowPos( hWnd, HWND_TOPMOST, 600, 500, 1, 1, hb_bitOr( SWP_NOSIZE, SWP_DRAWFRAME ) )
@ 00,00 to 24,79 double
@ 01,01 SAY "012345678901234567890123456789012345678901234567890123456789012345678901234567"
@ 03,01 SAY "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
Inkey(0)
Return Nil
#pragma BEGINDUMP
#define WINVER 0x0600 // for Vista
#define _WIN32_WINNT 0x0600 // for Vista
#include "windows.h"
#include "hbapi.h"
HB_FUNC( GETCONSOLEWINDOWHANDLE )
{
HWND hwnd;
AllocConsole();
hwnd = FindWindowA("ConsoleWindowClass",NULL);
hb_retnl( (LONG) hwnd );
}
HB_FUNC ( SETWINDOWPOS )
{
HWND hwnd = (HWND) hb_parnl(1); // handle to window or control
HWND hWndInsertAfter= (HWND) hb_parnl(2); // placement-order handle
int X = hb_parni(3); // horizontal position
int Y = hb_parni(4); // vertical position
int cx = hb_parni(5); // width
int cy = hb_parni(6); // height
UINT uFlags = (UINT) hb_parni(7); // window-positioning options
hb_retl( (BOOL) SetWindowPos( hwnd, hWndInsertAfter, X, Y, cx, cy, uFlags ) );
}
#pragma ENDDUMP
Talvez asi, como en este ejemplo, poderias continuar en 3.0.46
o pasarme a la 3.2 y bajar los parches ... Me podrías decir después de la 3.2 que versiones salieron estables (sin parches) antes de llagar a la 4.2 ?
Yo partiria para la más nueva version. Yo tengo una opinion muy formada con respecto a versiones.
Leé esto por favor, si querés dejá tu opinion a respecto. Creo que es lo que más hace falta por aqui... que todo dén su opinion y relaten sus dificultades.
Pero me parece apropiado estar actualizado SIEMPRE !