Page 1 of 1

Ajustar resolucion

PostPosted: Fri Oct 17, 2008 10:30 pm
by jaba
Antonio

Como puedo cambiar la resolución del monitor al inicio de ejecutar la aplicación y dejarla conforme estaba al salir de la misma?
Entube buscando en el foro y no fue claro lo poco que encontré

Gracias por tu orientación

Jairo Barbosa

PostPosted: Sat Oct 18, 2008 3:16 pm
by horacio
Jaba
Aqui en el foro hay una clase para eso, yo participé en ese hilo que lo inició Manuel Valdenebro ( creo ) e inclusive lo utilizé en una aplicación. En Fivewin Brasil, en Dicas, se encuentra esta clase pero había que hacer unas modificaciones.
Saludos

PostPosted: Sat Oct 18, 2008 4:15 pm
by jaba
horacio wrote:Jaba
Aqui en el foro hay una clase para eso, yo participé en ese hilo que lo inició Manuel Valdenebro ( creo ) e inclusive lo utilizé en una aplicación. En Fivewin Brasil, en Dicas, se encuentra esta clase pero había que hacer unas modificaciones.
Saludos


Horacio

Sï... estuve mirando en el foro y note que Manuel desarrollo algo al respecto, le escribí al directo pero no tuve respuesta de el. Agradezco tu reporte y si tienes alguna función o arreglo al respecto le agradece que lo compartas en el foro para que todos tengamos la oportunidad

Cordialmente

Jairo Barbosa

PostPosted: Sun Oct 19, 2008 3:06 pm
by horacio
Jaba
Estoy fuera de mi ciudad. El martes regreso y te lo envio. Saludos

Para quienes lo requieran

PostPosted: Sun Oct 19, 2008 6:02 pm
by jaba
horacio wrote:Jaba
Estoy fuera de mi ciudad. El martes regreso y te lo envio. Saludos

//---------------------------------------------------------------------//
Horacio

Buen viaje
Acabo de poner en el foro la función de Don Manuel Valdenebro, que aunque no recibí respuesta de le me tome el atrevimiento y le hice algunas modificaciones para que quedara un poco mas amigable, me gustaría que la ensayes y me dieras tu opinión ya que estando en cualquier resolución de pantalla la pasa sin problemas a la deseada, fue muy fácil, dejo un ejemplo con ejecutable y los fuentes en el siguiente link porque le puede servir a otras personas.


http://rapidshare.com/files/155573089/Tutor02.rar.html

Cordialmente

Jairo Barbosa

PostPosted: Mon Oct 27, 2008 2:58 pm
by horacio
jaba;
Disculpame que no te respondí en tiempo y forma pero tuve algunos inconvenientes con mi proveedor de internet. Aqui te mando el código


#define DM_PELSWIDTH nHex("80000")
#define DM_PELSHEIGHT nHex("100000")

Function CambiaResolucion( nAncho, nAlto, lPreguntar)

Local oDevMode
Local lPosible
Local cBuffer
Local lCamReso := .f.

Default nAncho := GetSysMetrics( 0 ), nAlto := GetSysMetrics( 1 ), lPreguntar := .t.

Struct oDevMode
Member cDevName AS STRING LEN 32
Member nSpecVer AS WORD
Member nDrvVer AS WORD
Member nSize AS WORD
Member nDrvExtra AS WORD
Member nFields AS DWORD
Member nOrientat AS WORD
Member nPaperSiz AS WORD
Member nPaperLen AS WORD
Member nPaperWid AS WORD
Member nScale AS WORD
Member nCopies AS WORD
Member nDefSrc AS WORD
Member nPrnQlty AS WORD
Member nColor AS WORD
Member nDuplex AS WORD
Member nYResolut AS WORD
Member nTTOpt AS WORD
Member nCollate AS WORD
Member cFormName AS STRING LEN 32
Member nUnusePad AS WORD
Member nBitsPPel AS DWORD
Member nPelWidth AS DWORD
Member nPelHeigh AS DWORD
Member nDisFlags AS DWORD
Member nDisFreq AS DWORD
Endstruct

cBuffer := oDevMode : cBuffer
// Comprueba si es posible cambiar la resolución
lPosible := EnumDisplaySettings(0, 0, @cBuffer)

// Si es posible cambiar la resolución
If( lPosible )
If( lPreguntar )
If( !MsgYesNo("Desea cambiar la resolución?", "Atención") )
Return lCamReso
end
end
oDevMode:nFields := nOr( DM_PELSWIDTH, DM_PELSHEIGHT )
oDevMode:nPelWidth := nAncho
oDevMode:nPelHeigh := nAlto
cBuffer:=oDevMode:cBuffer
Try
ChangeDisplaySettings(@cBuffer, 4)
lCamReso := .T.
Catch
MsgStop("Modo no soportado", "Error" )
End
else
MsgStop("Modo no soportado", "Error" )
end
Return lCamReso


DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,;
iModeNum AS DWORD, ;
@lpDevMode AS LPSTR) AS BOOL PASCAL;
FROM "EnumDisplaySettingsA" LIB "User32.dll"

DLL32 FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,;
dwFlags AS DWORD) AS DWORD;
FROM "ChangeDisplaySettingsA" LIB "User32.dll"

DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,;
dwReserved AS DWORD) AS DWORD PASCAL;
LIB "user32.dll"

Probé tu solución y funciona perfectamente
Saludos

PostPosted: Mon Oct 27, 2008 11:50 pm
by jaba
horacio wrote:jaba;
Disculpame que no te respondí en tiempo y forma pero tuve algunos inconvenientes con mi proveedor de internet. Aqui te mando el código


#define DM_PELSWIDTH nHex("80000")
#define DM_PELSHEIGHT nHex("100000")

Function CambiaResolucion( nAncho, nAlto, lPreguntar)

Local oDevMode
Local lPosible
Local cBuffer
Local lCamReso := .f.

Default nAncho := GetSysMetrics( 0 ), nAlto := GetSysMetrics( 1 ), lPreguntar := .t.

Struct oDevMode
Member cDevName AS STRING LEN 32
Member nSpecVer AS WORD
Member nDrvVer AS WORD
Member nSize AS WORD
Member nDrvExtra AS WORD
Member nFields AS DWORD
Member nOrientat AS WORD
Member nPaperSiz AS WORD
Member nPaperLen AS WORD
Member nPaperWid AS WORD
Member nScale AS WORD
Member nCopies AS WORD
Member nDefSrc AS WORD
Member nPrnQlty AS WORD
Member nColor AS WORD
Member nDuplex AS WORD
Member nYResolut AS WORD
Member nTTOpt AS WORD
Member nCollate AS WORD
Member cFormName AS STRING LEN 32
Member nUnusePad AS WORD
Member nBitsPPel AS DWORD
Member nPelWidth AS DWORD
Member nPelHeigh AS DWORD
Member nDisFlags AS DWORD
Member nDisFreq AS DWORD
Endstruct

cBuffer := oDevMode : cBuffer
// Comprueba si es posible cambiar la resolución
lPosible := EnumDisplaySettings(0, 0, @cBuffer)

// Si es posible cambiar la resolución
If( lPosible )
If( lPreguntar )
If( !MsgYesNo("Desea cambiar la resolución?", "Atención") )
Return lCamReso
end
end
oDevMode:nFields := nOr( DM_PELSWIDTH, DM_PELSHEIGHT )
oDevMode:nPelWidth := nAncho
oDevMode:nPelHeigh := nAlto
cBuffer:=oDevMode:cBuffer
Try
ChangeDisplaySettings(@cBuffer, 4)
lCamReso := .T.
Catch
MsgStop("Modo no soportado", "Error" )
End
else
MsgStop("Modo no soportado", "Error" )
end
Return lCamReso


DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,;
iModeNum AS DWORD, ;
@lpDevMode AS LPSTR) AS BOOL PASCAL;
FROM "EnumDisplaySettingsA" LIB "User32.dll"

DLL32 FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,;
dwFlags AS DWORD) AS DWORD;
FROM "ChangeDisplaySettingsA" LIB "User32.dll"

DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,;
dwReserved AS DWORD) AS DWORD PASCAL;
LIB "user32.dll"

Probé tu solución y funciona perfectamente
Saludos

//--------------------------------------------------------------------------//

Gracias Horacio la Probare....

Cordial Saludo

Jairo

PostPosted: Thu Oct 30, 2008 3:57 pm
by elmoiquique
existe actualmente alguna funcion o libreria que cambie la resolucion de la pantalla cuando uno entre a un sistema y al salir restaure la del escritorio de windows, si es que son distintas

PostPosted: Thu Oct 30, 2008 11:46 pm
by jaba
elmoiquique wrote:existe actualmente alguna funcion o libreria que cambie la resolucion de la pantalla cuando uno entre a un sistema y al salir restaure la del escritorio de windows, si es que son distintas


http://rapidshare.com/files/155573089/Tutor02.rar.html

PostPosted: Fri Oct 31, 2008 1:07 am
by jrestojeda
Hola a todos.
Esto está muy interesante... Ahora bien, si no es mucho pedir.
A alguien se le ocurre cómo hacer para cambiar el tamaño de fuente también?

Ejemplo:
Pasar de 800 x 600 Fuentes chichas (96ppp) a 1024 x 768 Fuentes grandes (120ppp)

Lograr esto sería un gol de media cancha!!!

Si alguien tiene algo hecho al respecto sería buenísimo que lo comparta.

Desde ya muchas gracias.
Saludos, desde Argentina, Esteban.

PostPosted: Fri Oct 31, 2008 6:18 am
by Johnson
amigo,
isso nao caberia para o usuario deliberar?
jah fiz algo parecido, o usuario diz que tem problema de vista e tals...
é complicado
eu faço o seguinte, quando vejo q a resolucao eh incompatível com a que o sistema pretende, mando um msgalert...

na realidade o computador eh do cliente...