Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con la Risoluzione della Schermo.

Ciao a tutti, sono nuovo di VB5 ed ho 2 problemi che non
riesco proprio a risolvere.....:
Ho un form con 3 label, 1 image e 3 pulsanti.... e quando
cambio la risoluzione dello schermo (sia quando eseguo il
programma che quando non lo eseguo) questi non mi risultano
più allo stesso posto della vecchia risoluzione....
Se da 800x600 passo a 1024x768 questi si spostano sulla sinistra!!!! :-(
Come faccio a mantenere sempre la stessa posizione di tutti gli
oggetti del form anche quando cambio risoluzione ???
Poi un altro problema è che all'avvio del form vorrei eseguire un file
.Mp3 che si trova nella directory di installazione del programma
eseguibile.....
Chi sa come si fanno queste cose???
Grazie per una eventuale risposta anche per e-mail.
c...@mailandnews.com
Ciao a tutti!

eseguibile.....
Non so, mi spiace: in VB esiste il controllo multimediale, ma non credo
proprio possa eseguire MP3. Fai qualche ricerca sul sito comune, anche se mi
sembra non ci sia nulla: magari nei link.
Sito comune:  
http://www.murialdo.it/it_lang_vb
Ciao
Cesare Nicola

eseguibile.....
Tra poco, sul Sito Comune di questo NG, sarà disponibile un OCX, con tanto di esempio, per leggere i files Mp3.....
Ciao,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

Ops...... mi sono dimenticato una cosina che ti avevo prmesso... ^___^
Ecco una procedura per cambiare risoluzione e ridimensionare tutti i controlli al 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)


Ciao Moreno,
ho utilizzato il tuo esempio in un modulo in VB5 ma il problema non è
risolto....
Quando cambio la risoluzione da 800x600 a 1024x768 tutte le label, l'image e
i pulsanti si spostano verso la sinistra dello schermo, mentre prima erano
tutti
al centro.....
Mi spieghi meglio come fare???
Ah... e poi vorrei sapere quando esce l'ocx per gli mp3....
Grazie ancora, ciao.

Grazie ancora, ciao.
