Je recherche a changer la resolution de l´ecran au demarage de mon fichier et de
oz38
Messages postés22Date d'inscriptionmardi 23 mai 2006StatutMembreDernière intervention31 mai 2006
-
30 mai 2006 à 17:06
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
9 juin 2006 à 03:54
jái un gros problemes, lorsque que lón change de poste, nous avons pas obligatoirement la meme resolutions graphique , et mes userforms deviennent énormes. jái voulue les mettre a 80% de sa taille original , mais cela fait un joli caca!!!!! Donc je cherche un moyen, pour augmenter ma resolution graphique lors de lútilisation de ce programme, et que par la suite, a la fermeture du dossier ,il reprenne ses configues dórigine. Je suis vraiment coincé avec ce poroblème. Si quelqu´un a une solution, peut il venir a mon secour.
A voir également:
Je recherche a changer la resolution de l´ecran au demarage de mon fichier et de
NHenry
Messages postés15118Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention11 mai 2024159 30 mai 2006 à 17:18
Bonjour
Copuremment, si la résolution graphique est faible (relativement parlant), c'est qu'il y a une raison (carte graphique, moniteur), donc, cherche une autre méthode, c'est ce que je te conseille.
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
oz38
Messages postés22Date d'inscriptionmardi 23 mai 2006StatutMembreDernière intervention31 mai 2006 30 mai 2006 à 17:26
le probleme qu´il y a des gens preferent travailler avec une resolution plus grosse que d´autres, mais les cartes sont capable d´aller bien plus haut que ce que je veux. si il faut que je cherche dans une autre direction, la quelle me propose tu? car malheureusement je n´en vois pas
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 30 mai 2006 à 17:43
c'est à ton programme de s'adapter à l'utilisateur, pas le contraire : il existe des sources qui redimensionnent les interfaces automatiquement selon la taille de l'écran par exemple.
Bien souvent, il vaut mieux développer une interface avec une résolution la plus faible possible, quitte à augmenter la taille des contrôles dynamiquement par la suite, plutôt que de faire une interface trop grande de base !
oz38
Messages postés22Date d'inscriptionmardi 23 mai 2006StatutMembreDernière intervention31 mai 2006 31 mai 2006 à 10:35
bon pas de probleme pour recupere le code source mais comment lancer les modules de cette source, car la je patoge dans la puré.
Dans une discution le créateur dit qu´il faut appeler Resolution() et RestaureRes() mais je ne les voie pas. si quelqu´un comprend bien ce qu´il faut faire, peut il m´expliquer, je veut juste executer ma nouvelle resolution au demarrage du fichier et avant la fermeture restaurer ma configuration d´origine. Je n´ai pas trop assimilé le langage de programmation
oz38
Messages postés22Date d'inscriptionmardi 23 mai 2006StatutMembreDernière intervention31 mai 2006 31 mai 2006 à 15:35
Oubliez ce que j´ai écris avant, je lance le programme et j´ai plein de problème<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
dans le code:
Option Explicit
Global Const ReqResX = 1024
Global Const ReqResY = 768
Global Const ReqCoul = 32
Global Const CléPrim = HKEY_LOCAL_MACHINE
Global Const CléSec = "SOFTWARE\TestRes"
Global CurResX As Integer, CurResY As Integer, CurCoul As Integer
Global MustChangeRes As Boolean
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 Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Type DEVMODE
dmDeviceName As String * 32
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 * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Public Enum EnumSetRes
SUCCES = 0
ECHEC = -2
End Enum
'Fenêtre au premier planPrivate Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, Optional ByVal X As Long 0, Optional ByVal Y As Long 0, Optional ByVal cx As Long = 0, Optional ByVal cy As Long = 0, Optional ByVal wFlags As Long = 3) As Long
Public Enum SetWndPosConst
WND_TOPMOST = -1
WND_NOTOPMOST = -2
End Enum
Public Function SetWndPos(Fenêtre As Form, Position As SetWndPosConst)
Cette ligne, VBA n´en veut pas, il dit type définit par l´utilisateur non définit, comment y remédier
Dim dummy As Long
dummy = SetWindowPos(Fenêtre.hWnd, Position, 0, 0, 0, 0, 3)
End Function
Public Function GetNbCoul() As Integer
Dim dmEcran As DEVMODE
Dim blTMP As Boolean
blTMP = EnumDisplaySettings(0, -1, dmEcran)
GetNbCoul = dmEcran.dmBitsPerPel
End Function
Public Function GetResX() As Integer
Dim dmEcran As DEVMODE
EnumDisplaySettings 0, -1, dmEcran
GetResX = dmEcran.dmPelsWidth
' GetResX = Screen.Width \ Screen.TwipsPerPixelX
End Function
Public Function GetResY() As Integer
Dim dmEcran As DEVMODE
EnumDisplaySettings 0, -1, dmEcran
GetResY = dmEcran.dmPelsHeight
' GetResY = Screen.Height \ Screen.TwipsPerPixelY
End Function
Public Function SetRes(ByVal RezX As Single, ByVal RezY As Single, ByVal NbCoul As Integer) As EnumSetRes' If RezX GetResX And RezY GetResY And NbCoul = GetNbCoul Then Exit Function
Dim dmEcran As DEVMODE
Dim blTMP As Boolean, lgTMP As Long
blTMP = EnumDisplaySettings(0, -1, dmEcran) If RezX dmEcran.dmPelsWidth And RezY dmEcran.dmPelsHeight And NbCoul = dmEcran.dmBitsPerPel Then Exit Function
'dmEcran.dmFields = 1835008
If RezX <> dmEcran.dmPelsWidth Then dmEcran.dmFields = &H80000
If RezY <> dmEcran.dmPelsHeight Then dmEcran.dmFields = dmEcran.dmFields Or &H100000
If NbCoul <> dmEcran.dmBitsPerPel Then dmEcran.dmFields = dmEcran.dmFields Or &H100000
dmEcran.dmPelsWidth = RezX
dmEcran.dmPelsHeight = RezY
dmEcran.dmBitsPerPel = NbCoul
Call ChangeDisplaySettings(dmEcran, 1)
blTMP = SendMessage(65535, 27, 0, 0)
Dim ScInfo As Long
ScInfo = RezY * 2 ^ 16 + RezX
SendMessage &HFFFF&, &H7E, ByVal NbCoul, ByVal ScInfo
SetRes = lgTMP
End Function
Public Sub Resolution()
CurResX = GetResX
CurResY = GetResY
CurCoul = GetNbCoul
If CurResX <> ReqResX Or CurResY <> ReqResY Or CurCoul <> ReqCoul Then
If GetValue(CléPrim, CléSec, "AutoChangeRes") = "OK" Then
Call SetRes(ReqResX, ReqResY, ReqCoul)
Else
If CurResX < ReqResX Or CurResY < ReqResY Or CurCoul < ReqCoul Then
MustChangeRes = True
Else
MustChangeRes = False
End If
If MustChangeRes = False Then
If GetValue(CléPrim, CléSec, "PasAff") = "OK" Then Exit Sub
End If
Load frmChangeRes
Unload frmChangeRes
End If
End If
End Sub
VBA le comprend comme une variable mais qu´est ce que c´est?
Public Sub RestaureRes()
Call SetRes(CurResX, CurResY, CurCoul)
End Sub
si quelqu´un pouvait des fois me mettre un petit commentaire pour expliquer ce que veulent dire les lignes de programme SVP
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 31 mai 2006 à 21:42
D'une part, relie la remarque de DarkSid. Par exemple, si ton appli
crashe ou que l'utilisateur met fin au processus, la résolution ne sera
pas remise dans l'état où elle était. (Elle serait cependant remise au
démarrage du PC).
Je n'ai jamais fait de VBA, mais à ce que j'en sait, il y a pas mal de
limitation côté possibilité par rapport à Visual Basic 6. En
l'occurence, VBA ne connait apparement pas le type form...
Par contre, on dirait que tu peux appeler l'API, ce qui est le principal.
Les fonctions intéressantes sont "EnumDisplaySettings" et
"ChangeDisplaySettings". La première énumère les possibilité
d'affichage de l'écran (Ou d'une imprimante/d'un scanner). La seconde
permet de changer le mode d'affichage.
Il faut que tu récupère la résolution de l'écran au départ de l'appli,
que tu la sauvegarde dans un coin, que tu modifis la
résolution... Et que tu la restitue à la fin. Il faut aussi que
tu empèche de lancer 2 instances de ton appli ! Regarde du côté de
"App.PreviousInstance" ou quelque chose comme ça. En effet, si tu
réfléchis deux seconde, tu t'apercevras que 2 instances fermé dans le
même orde quelles ont été ouverte poserait problème... (Par contre, je
serais surppris que App existe dans VBA)
Je vais essayer de faire le ménage... Je garantis rien !
'Demande de signaler les variables non déclarées. Très pratique !
Option Explicit
'Déclaration des deux fonctions utilisées
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
'Un enregistrement utilisé dans les 2 API. Définie la config d'un écran.
Private Type DEVMODE
dmDeviceName As String * 32
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 * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
'Fonction qui renvoie la largeur et la hauteur actuelle de l'écran
Public Sub GetRes(ScreenWidth As Long, ScreenHeight As Long)
Dim dmEcran As DEVMODE
EnumDisplaySettings 0, -1, dmEcran
ScreenWidth = dmEcran.dmPelsWidth
ScreenHeight = dmEcran.dmPelsHeight
End Sub
'Fonction qui modifie la résolution de l'écran
Public Sub SetRes(ByVal ScreenWidth As Long, ByVal ScreenHeight As Long)
Dim dmEcran As DEVMODE
EnumDisplaySettings 0, -1, dmEcran
dmEcran.dmPelsWidth = ScreenWidth
dmEcran.dmPelsHeight = ScreenHeight
ChangeDisplaySettings dmEcran, 0
'J'ai changer le 1 en 0. Je crois que ça marche aussi bien sinon mieux comme ça.
'Mais hésite pas à remettre 1 si le zéro marche pas !
La fonction de changement de résolution ne fonctionne que si elle est supportée par l'écran (Vérifiable par EnumDisplaySettings).
Vala. dans ton cas, un GetRes puis un SetRes au démarrage, puis un
SetRes à la fermeture, en passant en paramètre les valeurs récupérées
par le GetRes.