Página 1 de 1

Resolução de tela: como definir/contextualizar do seu soft?

Enviado: 11 Dez 2009 11:17
por Dr.Microso
Colegas, saudações!

Meu aplicativo (feito em FW 2.4) possui uma interface que vai muito bem até a resolução de 800x600, porém, em resoluções maiores...

- Há como definir uma resolução de vídeo em que gostaria que seu aplicativo opere (por exemplo, sempre em 640x480), e mantê-la alheia ao do OS?
- Há alguma função que retorne a resolução de vídeo do usuário?

Grato.

Re: Resolução de tela: como definir/contextualizar do seu soft?

Enviado: 11 Dez 2009 22:18
por Vander
Olá;

nResHoriz := oWnd:nHorzRes() // retorna a resolucao horizontal
nResVert := oWnd:nVertRes() // retorna a resolucao vertical


Vander

Re: Resolução de tela: como definir/contextualizar do seu soft?

Enviado: 02 Fev 2010 00:06
por rochinha
Amiguinho,

Em meu sistema faço assim:

Código: Selecionar todos

...
   ResLargura := GetSysMetrics(0)   
   ResAltura  := GetSysMetrics(1)
   Resolucao  := alltrim(str(ResLargura))+'x'+alltrim(str(ResAltura))
   do case
      case Resolucao = "640x480"
           ? "Resolucao Impropria para trabalho"
           quit
      case Resolucao = "800x600"
           ResLargura := 800   
           ResAltura  := 600
      case Resolucao = "1024x768"
           ResLargura := 1024 // 800
           ResAltura  :=  768 // 600
      case Resolucao = "1280x1024"
           ResLargura := 1280 // 1024
           ResAltura  := 1024 // 768
   endcase
...
Após esta verificação, caso queira recuperar a ultima posição salva, use:

Código: Selecionar todos

...
   TelaMTopo      := Val(VerifyINI( "PROGRAMA"  , "COORDT", "000"            , cPath+"seu.ini" ))
   TelaMEsque     := Val(VerifyINI( "PROGRAMA"  , "COORDL", "000"            , cPath+"seu.ini" ))
   ResAltura      := Val(VerifyINI( "PROGRAMA"  , "COORDH", str(ResAltura)   , cPath+"seu.ini" ))
   ResLargura     := Val(VerifyINI( "PROGRAMA"  , "COORDW", str(ResLargura)  , cPath+"seu.ini" ))
   ResAltura      := ResAltura  - TelaMTopo
   ResLargura     := ResLargura - TelaMEsque
...
Para abrir a janela principal, acrescente:

Código: Selecionar todos

...
   ACTIVATE WINDOW oWnd MAXIMIZED VALID SalvaCoordenadas(oWnd) ; // Salva ultima coordenada antes de sair
                   oWnd:Move( TelaMTopo,TelaMEsque,ResLargura,ResAltura, .t. ) ; // Aqui a tela é reajustada
                   ON RESIZE SalvaCoordenadas(oWnd)  // Salva coordenadas após alterar posições da janela
...
Para que tudo funcione de forma adequada, acrescente as funções:

Código: Selecionar todos

...
function SalvaCoordenadas(oWnd)
   VerifyINI( "PROGRAMA", "COORDT", GetWndRect(oWnd:hWnd)[1], cPath+"seu.ini", .t. )
   VerifyINI( "PROGRAMA", "COORDL", GetWndRect(oWnd:hWnd)[2], cPath+"seu.ini", .t. )
   VerifyINI( "PROGRAMA", "COORDH", GetWndRect(oWnd:hWnd)[3], cPath+"seu.ini", .t. )
   VerifyINI( "PROGRAMA", "COORDW", GetWndRect(oWnd:hWnd)[4], cPath+"seu.ini", .t. )
   return nil

function VerifyINI( _section_, _entry_, _var_, _inifile_, _grava_ )
   oIni := TIni():New( _inifile_ )
   if _grava_ = .t.
      oIni:Set( _section_, _entry_, _var_ )
   endif
   return oIni:Get( _section_, _entry_, _var_, _var_ )
...

Re: Resolução de tela: como definir/contextualizar do seu soft?

Enviado: 03 Fev 2010 11:39
por Dr.Microso
Colegas, salve!

Legal Vander, não conhecia ainda este recurso.

Muito interessante o código Rochinha, bem funcional.
(bakana este seu novo avatar) .

Grato pela ajuda.