Página 1 de 1

Cambiar la resoluci

Publicado: Sab Feb 03, 2007 5:11 pm
por josem
Como puedo cambiar la resolución del monitor de 1024 x 768 a 800 x 600,
desde una aplicación en Xailer.
El monitor lo tengo configurado en 1024 x 768, pero la aplicación esta
desarrollada para 800 x 600. Lo que quiero es que las ventanas ocupen el
100% de la pantalla y se escale automáticamente, o bien cambiando la
resolución del monitor, o inclemtando la resolcuión de la aplicación a la
que realmente tiene el monitor configurado.
He mirado la variable pública "screen", pero no puedo cambiar ningún valor
de ella, solamente consultar sus datos
Saludos
José Manuel Serrano

Cambiar la resoluci

Publicado: Lun Feb 05, 2007 1:37 pm
por Bingen Ugaldebere
Tendrás que adaptarlo a tu aplicación pero esto es lo que yo uso y
funciona 100%
METHOD ChangeResolution( oSender, nWidth, nHeight ) CLASS tApplication
WITH OBJECT TScreenResolution():New()
:nWidth := nWidth
:nHeight := nHeight
IF :Test() // Probamos si está soportada
IF :Set() // La ponemos
// Si hay que reiniciar, preguntamos al usuario
IF :lNeedRestart
If MsgYesNo(If(AppData:cOriginalLng="ESP",;
"Es sistema necesita reiniciarse para
aplicar el cambio de resolución",;
"The System needs to restart to applicate
resolution changes"))
RebootSystem()
ELSE
// Dejar como estaba al inicio de la aplicación
:Reset()
ENDIF
ENDIF
ELSE
MsgInfo( If(AppData:cOriginalLng="ESP",;
"No se ha podido cambiar la resolución.",;
"Resolution not changed" ) )
ENDIF
ELSE
MsgInfo( If(AppData:cOriginalLng="ESP",;
ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
Resolución no soportada por el equipo." ,;
ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
Resolution unsupported on this computer" ) )
ENDIF
END
RETURN Nil
CLASS TScreenResolution FROM XScreenResolution
ENDCLASS
CLASS XScreenResolution FROM TComponent
PUBLISHED:
PROPERTY nWidth INIT Screen:nWidth
PROPERTY nHeight INIT Screen:nHeight
PUBLIC:
DATA lNeedRestart INIT .F. READONLY
METHOD Test()
METHOD Set()
METHOD Reset()
ENDCLASS
METHOD Reset() CLASS XScreenResolution
::nWidth := Screen:nWidth
::nHeight := Screen:nHeight
::Set()
::lNeedRestart := .F.
RETURN Nil
#pragma BEGINDUMP
#include <windows.h>
#include <xailer.h>
static BOOL XScreenRes_Run( PHB_ITEM Self, BOOL bChange )
{
DEVMODE dm;
BOOL bSuccess = FALSE;
memset( &dm, 0, sizeof( DEVMODE ) );
dm.dmSize = sizeof( DEVMODE );
if( EnumDisplaySettings( NULL, 0, &dm ) )
{
LONG lAction;
dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
dm.dmPelsWidth = XA_ObjGetNL( Self, "nWidth" );
dm.dmPelsHeight = XA_ObjGetNL( Self, "nHeight" );
lAction = ChangeDisplaySettings( &dm, CDS_TEST );
XA_ObjSendL( Self, "_lNeedRestart", FALSE );
switch( lAction )
{
case DISP_CHANGE_RESTART:
XA_ObjSendL( Self, "_lNeedRestart", TRUE );
// No hay break intencionadamente
case DISP_CHANGE_SUCCESSFUL:
{
bSuccess = TRUE;
if( bChange )
ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
break;
}
}
}
return bSuccess;
}
XA_FUNC_STATIC( XSCREENRESOLUTION_TEST )
{
PHB_ITEM Self = hb_stackSelfItem();
hb_retl( XScreenRes_Run( Self, FALSE ) );
}
XA_FUNC_STATIC( XSCREENRESOLUTION_SET )
{
PHB_ITEM Self = hb_stackSelfItem();
hb_retl( XScreenRes_Run( Self, TRUE ) );
}
XA_FUNC( REBOOTSYSTEM )
{
ExitWindowsEx( EWX_REBOOT, 0 );
}
#pragma ENDDUMP

Cambiar la resoluci

Publicado: Vie Feb 09, 2007 8:12 am
por josem
Bingen, gracias por tu respuesta.
Llevo varios días intentando adaptarla función pero no lo consigo
Me dá arios errores en la compilación:
Me he creador un formulario: "fResolucionPantalla.prg"
Al compilar de me dá el error:
fResolucionPantalla.prg(23) Error E0010 'Class "tApplication" not declared
for method: ChangeResolution(oSender,nWidth,nHeight ) ; function
ChangeResolution(oSender,nWidth,nHeight ) ; local self := QSelf()'
y la tengo declarada al inicio.
Que se me está escapando?
Muchas gracias
Saludos
José Manuel Serrano
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:[email=45c72546@news.xailer.com...]45c72546@news.xailer.com...[/email]
> Tendrás que adaptarlo a tu aplicación pero esto es lo que yo uso y
> funciona 100%
>
> METHOD ChangeResolution( oSender, nWidth, nHeight ) CLASS tApplication
>
> WITH OBJECT TScreenResolution():New()
> :nWidth := nWidth
> :nHeight := nHeight
> IF :Test() // Probamos si está soportada
> IF :Set() // La ponemos
> // Si hay que reiniciar, preguntamos al usuario
> IF :lNeedRestart
> If MsgYesNo(If(AppData:cOriginalLng="ESP",;
> "Es sistema necesita reiniciarse para
> aplicar el cambio de resolución",;
> "The System needs to restart to applicate
> resolution changes"))
> RebootSystem()
> ELSE
> // Dejar como estaba al inicio de la aplicación
> :Reset()
> ENDIF
> ENDIF
> ELSE
> MsgInfo( If(AppData:cOriginalLng="ESP",;
> "No se ha podido cambiar la resolución.",;
> "Resolution not changed" ) )
> ENDIF
> ELSE
> MsgInfo( If(AppData:cOriginalLng="ESP",;
> ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
> Resolución no soportada por el equipo." ,;
> ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
> Resolution unsupported on this computer" ) )
> ENDIF
> END
>
> RETURN Nil
>
> CLASS TScreenResolution FROM XScreenResolution
> ENDCLASS
>
> CLASS XScreenResolution FROM TComponent
>
> PUBLISHED:
> PROPERTY nWidth INIT Screen:nWidth
> PROPERTY nHeight INIT Screen:nHeight
>
> PUBLIC:
> DATA lNeedRestart INIT .F. READONLY
>
> METHOD Test()
> METHOD Set()
> METHOD Reset()
>
> ENDCLASS
>
> METHOD Reset() CLASS XScreenResolution
>
> ::nWidth := Screen:nWidth
> ::nHeight := Screen:nHeight
> ::Set()
> ::lNeedRestart := .F.
>
> RETURN Nil
>
>
> #pragma BEGINDUMP
>
> #include <windows.h>
> #include <xailer.h>
>
> static BOOL XScreenRes_Run( PHB_ITEM Self, BOOL bChange )
> {
> DEVMODE dm;
> BOOL bSuccess = FALSE;
>
> memset( &dm, 0, sizeof( DEVMODE ) );
> dm.dmSize = sizeof( DEVMODE );
>
> if( EnumDisplaySettings( NULL, 0, &dm ) )
> {
> LONG lAction;
>
> dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
> dm.dmPelsWidth = XA_ObjGetNL( Self, "nWidth" );
> dm.dmPelsHeight = XA_ObjGetNL( Self, "nHeight" );
>
> lAction = ChangeDisplaySettings( &dm, CDS_TEST );
> XA_ObjSendL( Self, "_lNeedRestart", FALSE );
>
> switch( lAction )
> {
> case DISP_CHANGE_RESTART:
> XA_ObjSendL( Self, "_lNeedRestart", TRUE );
> // No hay break intencionadamente
>
> case DISP_CHANGE_SUCCESSFUL:
> {
> bSuccess = TRUE;
> if( bChange )
> ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
>
> break;
> }
> }
> }
>
> return bSuccess;
> }
>
> XA_FUNC_STATIC( XSCREENRESOLUTION_TEST )
> {
> PHB_ITEM Self = hb_stackSelfItem();
>
> hb_retl( XScreenRes_Run( Self, FALSE ) );
> }
>
> XA_FUNC_STATIC( XSCREENRESOLUTION_SET )
> {
> PHB_ITEM Self = hb_stackSelfItem();
>
> hb_retl( XScreenRes_Run( Self, TRUE ) );
> }
>
> XA_FUNC( REBOOTSYSTEM )
> {
> ExitWindowsEx( EWX_REBOOT, 0 );
> }
>
> #pragma ENDDUMP
>


Attached files fResolucionPantalla.prg (3.5 KB)Â fResolucionPantalla.xfm (263 B)Â

Cambiar la resoluci

Publicado: Vie Feb 09, 2007 10:13 am
por ignacio
José Manuel,
Supongo que el código que te paso Bingen es tan sólo parte de un módulo en
el cual crea la clase TAplication . Simplemente con que incluyas esto arriba
del todo debería funcionar:
CLASS TApplication FROM XApplication
END CLASS
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Manuel" <josem@nuel.es> escribió en el mensaje
news:45cc1ec1$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Bingen, gracias por tu respuesta.
>
> Llevo varios días intentando adaptarla función pero no lo consigo
>
> Me dá arios errores en la compilación:
>
> Me he creador un formulario: "fResolucionPantalla.prg"
>
> Al compilar de me dá el error:
>
> fResolucionPantalla.prg(23) Error E0010 'Class "tApplication" not
> declared for method: ChangeResolution(oSender,nWidth,nHeight ) ; function
> ChangeResolution(oSender,nWidth,nHeight ) ; local self := QSelf()'
>
> y la tengo declarada al inicio.
>
> Que se me está escapando?
>
> Muchas gracias
>
> Saludos
> José Manuel Serrano
>
>
>
>
> "Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
> news:[email=45c72546@news.xailer.com...]45c72546@news.xailer.com...[/email]
>> Tendrás que adaptarlo a tu aplicación pero esto es lo que yo uso y
>> funciona 100%
>>
>> METHOD ChangeResolution( oSender, nWidth, nHeight ) CLASS tApplication
>>
>> WITH OBJECT TScreenResolution():New()
>> :nWidth := nWidth
>> :nHeight := nHeight
>> IF :Test() // Probamos si está soportada
>> IF :Set() // La ponemos
>> // Si hay que reiniciar, preguntamos al usuario
>> IF :lNeedRestart
>> If MsgYesNo(If(AppData:cOriginalLng="ESP",;
>> "Es sistema necesita reiniciarse para
>> aplicar el cambio de resolución",;
>> "The System needs to restart to applicate
>> resolution changes"))
>> RebootSystem()
>> ELSE
>> // Dejar como estaba al inicio de la aplicación
>> :Reset()
>> ENDIF
>> ENDIF
>> ELSE
>> MsgInfo( If(AppData:cOriginalLng="ESP",;
>> "No se ha podido cambiar la resolución.",;
>> "Resolution not changed" ) )
>> ENDIF
>> ELSE
>> MsgInfo( If(AppData:cOriginalLng="ESP",;
>> ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
>> Resolución no soportada por el equipo." ,;
>> ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
>> Resolution unsupported on this computer" ) )
>> ENDIF
>> END
>>
>> RETURN Nil
>>
>> CLASS TScreenResolution FROM XScreenResolution
>> ENDCLASS
>>
>> CLASS XScreenResolution FROM TComponent
>>
>> PUBLISHED:
>> PROPERTY nWidth INIT Screen:nWidth
>> PROPERTY nHeight INIT Screen:nHeight
>>
>> PUBLIC:
>> DATA lNeedRestart INIT .F. READONLY
>>
>> METHOD Test()
>> METHOD Set()
>> METHOD Reset()
>>
>> ENDCLASS
>>
>> METHOD Reset() CLASS XScreenResolution
>>
>> ::nWidth := Screen:nWidth
>> ::nHeight := Screen:nHeight
>> ::Set()
>> ::lNeedRestart := .F.
>>
>> RETURN Nil
>>
>>
>> #pragma BEGINDUMP
>>
>> #include <windows.h>
>> #include <xailer.h>
>>
>> static BOOL XScreenRes_Run( PHB_ITEM Self, BOOL bChange )
>> {
>> DEVMODE dm;
>> BOOL bSuccess = FALSE;
>>
>> memset( &dm, 0, sizeof( DEVMODE ) );
>> dm.dmSize = sizeof( DEVMODE );
>>
>> if( EnumDisplaySettings( NULL, 0, &dm ) )
>> {
>> LONG lAction;
>>
>> dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
>> dm.dmPelsWidth = XA_ObjGetNL( Self, "nWidth" );
>> dm.dmPelsHeight = XA_ObjGetNL( Self, "nHeight" );
>>
>> lAction = ChangeDisplaySettings( &dm, CDS_TEST );
>> XA_ObjSendL( Self, "_lNeedRestart", FALSE );
>>
>> switch( lAction )
>> {
>> case DISP_CHANGE_RESTART:
>> XA_ObjSendL( Self, "_lNeedRestart", TRUE );
>> // No hay break intencionadamente
>>
>> case DISP_CHANGE_SUCCESSFUL:
>> {
>> bSuccess = TRUE;
>> if( bChange )
>> ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
>>
>> break;
>> }
>> }
>> }
>>
>> return bSuccess;
>> }
>>
>> XA_FUNC_STATIC( XSCREENRESOLUTION_TEST )
>> {
>> PHB_ITEM Self = hb_stackSelfItem();
>>
>> hb_retl( XScreenRes_Run( Self, FALSE ) );
>> }
>>
>> XA_FUNC_STATIC( XSCREENRESOLUTION_SET )
>> {
>> PHB_ITEM Self = hb_stackSelfItem();
>>
>> hb_retl( XScreenRes_Run( Self, TRUE ) );
>> }
>>
>> XA_FUNC( REBOOTSYSTEM )
>> {
>> ExitWindowsEx( EWX_REBOOT, 0 );
>> }
>>
>> #pragma ENDDUMP
>>
>
>
>

Cambiar la resoluci

Publicado: Mar Feb 13, 2007 8:15 pm
por Bingen Ugaldebere
Perdona llevaba varios dí­as sin pasar por el foro.
Efectivamente es lo que comenta Ignacio, pero lo deje por obvio pensando
que tu lo readaptarí­as, supongo que con la solución de Ignacio te andará
y si no me contactas por privado y te lo readapto yo.
Salu2.
José Manuel escribió:
> Bingen, gracias por tu respuesta.
>
> Llevo varios dí­as intentando adaptarla función pero no lo consigo
>
> Me dá arios errores en la compilación:
>
> Me he creador un formulario: "fResolucionPantalla.prg"
>
> Al compilar de me dá el error:
>
> fResolucionPantalla.prg(23) Error E0010 'Class "tApplication" not declared
> for method: ChangeResolution(oSender,nWidth,nHeight ) ; function
> ChangeResolution(oSender,nWidth,nHeight ) ; local self := QSelf()'
>
> y la tengo declarada al inicio.
>
> Que se me está escapando?
>
> Muchas gracias
>
> Saludos
> José Manuel Serrano
>
>
>
>
> "Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
> news:[email=45c72546@news.xailer.com...]45c72546@news.xailer.com...[/email]
>> Tendrás que adaptarlo a tu aplicación pero esto es lo que yo uso y
>> funciona 100%
>>
>> METHOD ChangeResolution( oSender, nWidth, nHeight ) CLASS tApplication
>>
>> WITH OBJECT TScreenResolution():New()
>> :nWidth := nWidth
>> :nHeight := nHeight
>> IF :Test() // Probamos si está soportada
>> IF :Set() // La ponemos
>> // Si hay que reiniciar, preguntamos al usuario
>> IF :lNeedRestart
>> If MsgYesNo(If(AppData:cOriginalLng="ESP",;
>> "Es sistema necesita reiniciarse para
>> aplicar el cambio de resolución",;
>> "The System needs to restart to applicate
>> resolution changes"))
>> RebootSystem()
>> ELSE
>> // Dejar como estaba al inicio de la aplicación
>> :Reset()
>> ENDIF
>> ENDIF
>> ELSE
>> MsgInfo( If(AppData:cOriginalLng="ESP",;
>> "No se ha podido cambiar la resolución.",;
>> "Resolution not changed" ) )
>> ENDIF
>> ELSE
>> MsgInfo( If(AppData:cOriginalLng="ESP",;
>> ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
>> Resolución no soportada por el equipo." ,;
>> ToString(nWidth)+"x"+ToString(nHeight)+" pixel.
>> Resolution unsupported on this computer" ) )
>> ENDIF
>> END
>>
>> RETURN Nil
>>
>> CLASS TScreenResolution FROM XScreenResolution
>> ENDCLASS
>>
>> CLASS XScreenResolution FROM TComponent
>>
>> PUBLISHED:
>> PROPERTY nWidth INIT Screen:nWidth
>> PROPERTY nHeight INIT Screen:nHeight
>>
>> PUBLIC:
>> DATA lNeedRestart INIT .F. READONLY
>>
>> METHOD Test()
>> METHOD Set()
>> METHOD Reset()
>>
>> ENDCLASS
>>
>> METHOD Reset() CLASS XScreenResolution
>>
>> ::nWidth := Screen:nWidth
>> ::nHeight := Screen:nHeight
>> ::Set()
>> ::lNeedRestart := .F.
>>
>> RETURN Nil
>>
>>
>> #pragma BEGINDUMP
>>
>> #include <windows.h>
>> #include <xailer.h>
>>
>> static BOOL XScreenRes_Run( PHB_ITEM Self, BOOL bChange )
>> {
>> DEVMODE dm;
>> BOOL bSuccess = FALSE;
>>
>> memset( &dm, 0, sizeof( DEVMODE ) );
>> dm.dmSize = sizeof( DEVMODE );
>>
>> if( EnumDisplaySettings( NULL, 0, &dm ) )
>> {
>> LONG lAction;
>>
>> dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
>> dm.dmPelsWidth = XA_ObjGetNL( Self, "nWidth" );
>> dm.dmPelsHeight = XA_ObjGetNL( Self, "nHeight" );
>>
>> lAction = ChangeDisplaySettings( &dm, CDS_TEST );
>> XA_ObjSendL( Self, "_lNeedRestart", FALSE );
>>
>> switch( lAction )
>> {
>> case DISP_CHANGE_RESTART:
>> XA_ObjSendL( Self, "_lNeedRestart", TRUE );
>> // No hay break intencionadamente
>>
>> case DISP_CHANGE_SUCCESSFUL:
>> {
>> bSuccess = TRUE;
>> if( bChange )
>> ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
>>
>> break;
>> }
>> }
>> }
>>
>> return bSuccess;
>> }
>>
>> XA_FUNC_STATIC( XSCREENRESOLUTION_TEST )
>> {
>> PHB_ITEM Self = hb_stackSelfItem();
>>
>> hb_retl( XScreenRes_Run( Self, FALSE ) );
>> }
>>
>> XA_FUNC_STATIC( XSCREENRESOLUTION_SET )
>> {
>> PHB_ITEM Self = hb_stackSelfItem();
>>
>> hb_retl( XScreenRes_Run( Self, TRUE ) );
>> }
>>
>> XA_FUNC( REBOOTSYSTEM )
>> {
>> ExitWindowsEx( EWX_REBOOT, 0 );
>> }
>>
>> #pragma ENDDUMP
>>
>
>