Page 1 of 1

Windows Vista y FWH y FWH64

PostPosted: Sat Feb 03, 2007 8:56 pm
by RodolfoRBG
Hola Foro!

Como el "evento taurino" por el cambio de _ también me tocó a mi ("La gran corrida"), ahora que soy desempleado, o mejor dicho, autoempleado, me verán dando lata por aqui mas seguido.

Ya veo anunciado por todos lados el tan esperado Windows Vista y no puedo dejar de preguntar si será compatible con nuestro querido FWH o si pasará lo mismo que FW de 16 bits al intentarlo trabajar con Windows de 32 bits, que marcaba errores de falta de memoria.

Suponiendo que sea compatible, entonces cual sería la ventaja de usar FWH64?

Notese que estoy muy desligado de esto del Hardware/Software actual, asi es que a lo mejor mis preguntas resultan un tanto tontas, pero no se hagan, más de uno de ustedes no se atrevía a preguntar.

'chos salu2 (y pronto cambiaré la foto de mi último proyecto (mi hijo) por la mía, nada mas que sanen mis heridas al quitarme la papada y las arrugas... jajaja, para nada!)

PostPosted: Sat Feb 03, 2007 9:38 pm
by Antonio Linares
Rodolfo,

Vista existe en versiones de 32 bits y de 64 bits. Igual que XP hasta ahora.

FWH 32 bits es totalmente compatible con Vista (32 y 64 bits). FWH64 es para usarlo sólo en versiones de 64 bits, bien sea Vista 64 ó XP 64.

Las aplicaciones de 64 bits no funcionan en ordenadores de 32 bits. Pero las aplicaciones de 32 bits si funcionan en 32 y en 64.

Además las aplicaciones de 16 bits no funcionan en XP ó Vista de 64 bits

PostPosted: Sun Feb 04, 2007 11:36 am
by Rafael Clemente
Antonio:
La última versión de FWH ¿admite ya hacer diálogos transparentes (o sea, con brush Null) en Vista? Recuerda que ésa era una incompatibilidad detectada hace un par de semanas.
Saludos
Rafael

PostPosted: Sun Feb 04, 2007 12:04 pm
by Antonio Linares
Rafael,

De momento no, aún no hemos localizado lo que ha podido cambiar en Vista respecto al uso de brushes null

PostPosted: Tue Feb 06, 2007 8:31 pm
by Antonio Linares
Rafael,

En Vista hay que usar el estilo WS_EX_TRANSPARENT en vez de usar el brush NULL

PostPosted: Tue Feb 06, 2007 11:07 pm
by Rafael Clemente
Muchísimas gracias, Antonio. Lo probaré en cuanto pueda.
Saludos,

Rafael

PostPosted: Tue Feb 06, 2007 11:19 pm
by Rafael Clemente
Antonio:

Defino el estilo de la ventana como :

nStyle := WS_POPUP+WS_THICKFRAME+WS_EX_TRANSPARENT pero al

compilar me da Ambiguous reference: 'WS_EX_TRANSPARENT'

¿Por favor, qué valor tiene esa constante? (Utilizo FWH 2.6)

Gracias,
Rafael
[/code]

PostPosted: Tue Feb 06, 2007 11:54 pm
by Antonio Linares
Rafael,

#define WS_EX_TRANSPARENT 32 // 0x00000020L

PostPosted: Wed Feb 07, 2007 7:20 am
by Rafael Clemente
Antonio:
Esta solución es específica para Vista? Porque de momento lo he probado en Xp y no funciona (el diálogo aparece opaco en gris). Más tarde lo intentaré en Vista y te diré algo.
Gracias
Rafael

PostPosted: Wed Feb 07, 2007 8:56 am
by Rafael Clemente
Fernando:

Tengo una aplicación que coloca un diálogo transparente sobre una ventana de otra aplicación. Es transparente -claro- para poder ver lo que hay en la ventana original y poder pintar cosas sobre ella. Luego, al cerrar el diálogo, lo que haya modificado desaparece y todo queda como estaba.

Con Xp utilizaba un diálogo con brush NULL y todo iba perfecto. Pero en Vista-Aero, la misma aplicación me crea un diálogo opaco, con fondo gris que no me deja ver qué hay debajo. En este momento no tengo Vista a mano pero sí he probado lo que sugiere Antonio en mi Xp de siempre. Y
nStyle := WS_EX_TRANSPARENT (sin brush) no parece que funcione sobre Xp, o sea. me genera un diálogo opaco, no trasparente. Esta tarde lo probaré con Vista.

Si quieres probarlo tú, este es el código que SI funciona en Xp y NO funciona en Vista:

Code: Select all  Expand view
#include "Fivewin.ch"

Function Main()
Local oWnd, oBrush
DEFINE BRUSH oBrush STYLE "BORLAND"
Define Window oWnd from 0,0 TO 100,200 Pixel Brush oBrush
Activate Window oWnd On Init Superponer()
Return Nil

Static Function Superponer()
Local oDlg, oBrush
DEFINE BRUSH oBrush STYLE "NULL"
Define Dialog oDlg from 0,0 TO 100,100 Pixel Brush oBrush
Activate Dialog oDlg
Return Nil


Saludos,
Rafael

PostPosted: Wed Feb 07, 2007 9:20 am
by Antonio Linares
Rafael,

Lo hemos probado así en Vista:
Code: Select all  Expand view
#define GWL_EXSTYLE      -20

Define Dialog oDlg from 0,0 TO 100,100 PIXEL
Activate Dialog oDlg ;
   ON INIT SetWindowLong( oDlg:hWnd, GWL_EXSTYLE,  WS_EX_TRANSPARENT )

pero sigue sin funcionar.

PostPosted: Wed Feb 07, 2007 9:28 am
by Antonio Linares
Rafael,

Así parece que funciona bien :-)
Code: Select all  Expand view
#define WS_EX_LAYERED 0x80000

Define Dialog oDlg from 0,0 TO 100,100 PIXEL
Activate Dialog oDlg ;
   ON INIT SetWindowLong( oDlg:hWnd, GWL_EXSTYLE, nOr( GetWindowLong( oDlg:hWnd, GWL_EXSTYLE ), WS_EX_LAYERED ) )

PostPosted: Wed Feb 07, 2007 10:53 am
by Rafael Clemente
Antonio:
Hasta esta tarde no podré probarlo en Vista. Sin embargo, he probado esto en Xp y no parece funcionar.
Code: Select all  Expand view
#include "Fivewin.ch"
#define WS_EX_LAYERED 0x80000
#define GWL_EXSTYLE      -20

Function Main()
Local oWnd, oBrush
DEFINE BRUSH oBrush STYLE "BORLAND"
Define Window oWnd from 0,0 TO 100,200 Pixel Brush oBrush
Activate Window oWnd On Init Superponer()
Return Nil

Static Function Superponer()
Local oDlg, oBrush
//DEFINE BRUSH oBrush STYLE "NULL"
Define Dialog oDlg from 50,50 TO 100,100 Pixel   // Brush oBrush
Activate Dialog oDlg ON INIT (SetWindowLong( oDlg:hWnd, GWL_EXSTYLE, nOr( GetWindowLong( oDlg:hWnd, GWL_EXSTYLE ), WS_EX_LAYERED ) )
Return Nil


Si funciona en Vista ¿quiere esto decir que habrá que programarlo de forma distinta para correr en un sistema operativo o en otro? ¿Habría manera de unificarlo para que funcione igual en los dos?

Gracias

Rafael