USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Resolução de tela
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 03/01/2005 09:11 hs            
Pessoal, estou com um pequeno problema ao alterar a resolução de tela.
Uso este algoritmo para fazê-lo:
 
**********************************************************
'declaração da api
Private Declare Function EnumDisplaySettings Lib _
        "user32" Alias "EnumDisplaySettingsA" _
        (ByVal lpszDeviceName As Long, ByVal _
        iModeNum As Long, lpDevMode As Any) As _
        Boolean
Private Declare Function ChangeDisplaySettings Lib _
        "user32" Alias "ChangeDisplaySettingsA" _
        (lpDevMode As Any, ByVal dwflags As Long) _
        As Long
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Type DEVMODE
  dmDeviceName As String * CCDEVICENAME
  dmSpecVersion As Integer
  dmDriverVersion As Integer
  dmSize As Integer
  dmDriverExtra As Integer
  dmFields As Long
  dmOrientation As Integer
  dmPaperSize As Integer
  dmPaperLength As Integer
  dmPaperWidth As Integer
  dmScale As Integer
  dmCopies As Integer
  dmDefaultSource As Integer
  dmPrintQuality As Integer
  dmColor As Integer
  dmDuplex As Integer
  dmYResolution As Integer
  dmTTOption As Integer
  dmCollate As Integer
  dmFormName As String * CCFORMNAME
  dmUnusedPadding As Integer
  dmBitsPerPel As Integer
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
End Type
 
'Sub para trocar a resolução da tela
Public Sub ChangeRes(iWidth As Single, iHeight As Single)
  Dim DevM As DEVMODE
  Dim a As Boolean
  Dim i As Long
  Dim b As Long
  i = 0
  Do
    a = EnumDisplaySettings(0&, i&, DevM)
    i = i + 1
  Loop Until (a = False)
  DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
  DevM.dmPelsWidth = iWidth
  DevM.dmPelsHeight = iHeight
  b = ChangeDisplaySettings(DevM, 0)
End Sub
****************************************************
 
O código funciona só q tem um porém... se por exemplo a resolução da tela estava 800x600 e mudo, usando o código acima, por exemplo, para 1024x768 os atalhos q estão no desktop ficam desarranjados, mas isso é comum. O problema é q não consigo realocá-los fora da área q antes era de 800x600. Muito complicado para entender?? Olhem:
 
Tela 800x600:
 
 _____________
|                        |
|                        |
|                        |
|____________|
 
Tela 1024x768:
 
______________________
|                                         |
|                                         |
|                                         |
|                                         |
|                                         |
|____________________ |
 
O q acontece é o seguinte:
 
______________________
|   ___________                |
|  | a a              |                |
|  |                    |                |
|  |__________               |
|   b b b b b                        |
|____________________ |
 
A parte vermelha é a tela com resolução 800x600 (antes de executar o código)
A parte azul é tela com resolução 1024x768 (depois de executar o código)
 
O q acontece depois q utilizo o código q citei é q os atalhos q estavam na tela 800x600 (vermelha) não consigo colocá-los na área azul onde estão as letras "b b b b". Eles, os atalhos, só ficam, e são realocados, na área vermelha. Se eu quiser "puxar" um para a parte onde estão as letras "b b b b", por exemplo, eles não vão.
 
A questão é: como dá para resolver isso? Tem algum outro código, ou modo, de troca de resolução de tela q não tem este, digamos, "efeito colateral"?
 
será q ficou claro??
Qq dúvida eu reformulo a pergunta.
 
obrigado a quem tentar
 
t+
TÓPICO EDITADO
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 04/01/2005 19:55 hs            
ninguém pode dar uma mãozinha?Emoções
     
Sandro
não registrado
Postada em 04/01/2005 23:27 hs   
Olá,
 
Cara, isto está me parecendo um problema com os drivers de vídeo. Uso uma rotina igual a essa em meus projetos e não tenho problemas com ela. Realmente acontecem algumas coisas engraçadas, como a barra de tarefas do Windows ficar "flutuando" na área de trabalho, mas com relação aos ícones eu não tive qualquer problema.
     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 05/01/2005 17:26 hs            
hummmmmmmmm, vc usa em diferentes SOs??? Estou usando em um winxp... bom pode ser q não tenha nada a ver tb... mas só acontece qdo uso o código, se eu mexer na resolução de tela atráves das propriedades do vídeo vai normal...
 
bom, de qualquer forma obrigado pela ajuda....
t+
     
Mateus
AMADORA
PT - PORTUGAL
Postada em 06/01/2005 11:01 hs            
Sei que não vai ajudar nada, mas...
 
Também uso esse método para mudar a resolução nas minhas aplicações e elas hoje rodam, sobretudo, em WindowsXP e nunca tive qualquer problema.

João Mateus

Se precisar de ajuda extra, visite:

http://joaomateus.planetaclix.pt

     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 06/01/2005 14:44 hs            
Obrigado de qualquer forma Mateus e Sandro. Vou ver o q posso fazer...  quem tiver mais sugestões podem postar sem problemas.
 
t+
TÓPICO EDITADO
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página