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
>>
>
>