Newsgroup: it.comp.lang.visual-basic
Titolo: Problema risoluzione video





Il programma A alla pressione di un tasto deve 
settare ris. 800*600 caratteri piccoli, lanciare programma B, attendere che 
finisca, risettare risoluzione a 1024*768 caratteri grandi e continuare la sua 
risoluzione.


E' secondo voi fattibile?


 


Ricordavo un esempio sul sito per cambio 
risoluzione ma non lo ho trovato, probabilmente ricordo male.


Grazie a chiunque possa darmi una dritta per 
risolvere questo problemaccio.


 


 



E' secondo voi fattibile?
Quanto è bello il copia e incolla... ;-))
Da un vecchio mex di Moreno Sirri:
____________________
...Oppure puoi utilizzare una procedura come quella che ti invio, che ridimensiona i controlli a
seconda del cambio di
risoluzione.
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
       Const CCDEVICENAME = 32
       Const CCFORMNAME = 32
       Const DM_PELSWIDTH = &H80000
       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
Dim DevM As DEVMODE
Sub ChangeRes(iWidth As Single, iHeight As Single)
       Dim a As Boolean
       Dim i&
       i = 0
              Do
                     a = EnumDisplaySettings(0&, i&, DevM)
                     i = i + 1
              Loop Until (a = False)
       Dim b&
       DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
       DevM.dmPelsWidth = iWidth
       DevM.dmPelsHeight = iHeight
       b = ChangeDisplaySettings(DevM, 1)
End Sub
Sub SetReso(frm As Form, RO!, RV!)
   On Error GoTo ErrH
' dimensione della form
    frm.Width = frm.Width * RO
    frm.Height = frm.Height * RV
' dimensione e posizione dei control
For i = 0 To frm.Controls.Count - 1
    frm.Controls(i).Left = frm.Controls(i).Left * RO
     frm.Controls(i).Top = frm.Controls(i).Top * RV
    frm.Controls(i).Width = frm.Controls(i).Width * RO
    frm.Controls(i).Height = frm.Controls(i).Height * RV
    frm.Controls(i).FontSize = frm.Controls(i).FontSize * RV
Next i
'posizione eventuali linee
   For i = 0 To frm.Linea.Count - 1
      frm.Linea(i).X1 = frm.Linea(i).X1 * RO
      frm.Linea(i).X2 = frm.Linea(i).X2 * RO
      frm.Linea(i).Y1 = frm.Linea(i).Y1 * RV
      frm.Linea(i).Y2 = frm.Linea(i).Y2 * RV
   Next
Exit Sub
ErrH:
    Resume Next
End Sub
Utilizzo:
Memorizzo in due variabili i valori di risoluzione attuali:
AttualeX=Screen.Width / Screen.TwipsPerPixelX
AttualeY=Screen.Height / Screen.TwipsPerPixelY
Poi cambio risoluzione:
ChangeRes(1024, 768)
E ridimensiono i controlli:
RapportoOres = (Screen.Width / Screen.TwipsPerPixelX) / AttualeX
RapportoVres = (Screen.Height / Screen.TwipsPerPixelY) / AttualeY
Call SetReso(me, RapportoOres, RapportoVres)
_________________
Bisognerebbe offrirgli una
    ________
   |~~|~~~|~|
   |~~|~~~|~|=="
   |  |   | |  "
   |  |   | |  "
   |  |   | |=="
   |__|___|_|  '
___ \______/ ____
(Vedere con font fixed-pitch)
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

Perfetto!!!!
Manca però un problema: il programma che deve lanciare deve essere settato
come Caratteri piccoli (dimensione normale 96 dpi), mentre il chiamante deve
essere per forza a caratteri grandi (125% normale 120 dpi).
Qualcuno sa come fare?
Grazie.

Cristiano Larghi Micronix2 <C.La...@Micronix.it> wrote in message
7q882f$mhr$1...@fe2.cs.interbusiness.it...

AZZ, lo avevi detto, ma io non ci ho fatto caso !  :-(
Spero per te di sbagliarmi, ma mi risulta che, se cambi la profondità
di colore o la dimensione dei caratteri _devi_ fare il reboot...
Ammesso che la cosa sia accettabile tecnicamente e che l'utente sia
d'accordo, devi salvare lo stato del programma prima del reboot,
fare in modo che il tuo riparta automaticamente all'avvio, lanciare
il 2° prog, attendere che finisca rimettere tutto a posto , rifare ancora
il boot e andare avanti...
Ehm, come dite voi "Piselli per diabetici" ?
