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

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Avatar do usuário
Dr.Microso
Usuário Nível 3
Usuário Nível 3
Mensagens: 173
Registrado em: 12 Jan 2009 21:26
Localização: Belo Horizonte, MG

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

Mensagem 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.
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

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

Mensagem por Vander »

Olá;

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


Vander
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

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

Mensagem 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_ )
...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Dr.Microso
Usuário Nível 3
Usuário Nível 3
Mensagens: 173
Registrado em: 12 Jan 2009 21:26
Localização: Belo Horizonte, MG

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

Mensagem 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.
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Responder