BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007
-
26 févr. 2004 à 14:51
BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007
-
12 mars 2004 à 12:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007 12 mars 2004 à 12:14
WAOUH!!! HEP HEP!! ça m'intéresse ça!
Beaucoup beaucoup même!
Fait tourner!
Je suis cette histoire avec intérêt!
Merci BasicInstinct
PS: j'espère que j'pourrai adapter ça avec mes surfaces DirectDraw!!
Bye les gens :)
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 201412 12 mars 2004 à 11:57
j'ai réussi a faire ce que je voulais avec mon multi-ecran....
MAJ tres prochainement :)))
@++
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 26 févr. 2004 à 17:57
Ok, n'hésite pas a faire tourner ou a poster une source sourtout ;)
Tu fait sa avec GetWindowsPos (ou un truc du genre) non ?
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 201412 26 févr. 2004 à 17:36
y'a moyen de savoir si la form est dans tel ou tel ecran, mais je l'ai pas mis pour ne pas alourdir le code. Je le rajouterai si vous voulez.
Moi je m'en sert pour un serveur de Log qui est plein ecran sur l'ecran2 ou en systray si l'ecran est inactif.
Merci pour les commentaires :)
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 26 févr. 2004 à 16:54
Héhé, le ce BobTSMSI ;)
J'ai également déja pensé à faire du multi écran, j'ai réfléchi à la technique mais pas passé à l'acte, plus besoin : les fenetres de windows, du moins les positions sont numérotées en je ne sais plus quelle unité (twips ou pixels). Si tu met dans le fom load d'une appli me.left=0, elle sera sur la bordure droite de l'écran 0. Apres, si tu as 2 écrans, le primaire est à droite et le 2eme a sa gauche, toujours pareil pour l'histoire du left = 0, mais si tu met par exemple me.left = -500, alors la elle fenetre sera sur l'autre écran ;) Apres a toi de trouver si l'éran 2 est a gauche, à droite, quelles dimensions (avec le code ici présent peut etre ? ;)) D'ailleur, il est utile est totalement fonctionnel ton code BasicInstinct, bravo;)
BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007 26 févr. 2004 à 15:02
Chez moi ça marche nickel cette méthode...
Bon courage!
Autre chose, si tu sais comment faire afficher une form dans un autre écran que le 0 , ça m'intéresse. C'est pour faire du multi-écran avec mon écran de veille.
Bye!
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 201412 26 févr. 2004 à 14:57
c'est bien ce que j'ai essayé de faire, mais ca me fait planter VB. Dc pour le moment j'ai pas plus epilogué que ca et je m'y remettrai quand j'aurai le courage !! (certainement cette nuit)
Merci
BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007 26 févr. 2004 à 14:51
Salut BasicInstinct!
Pour changer la résolution de l'écran 0, je suppose que tu utilises l'API "ChangeDisplaySettings"... Ben pour changer la résolution sur n'importe quel écran, utilise "ChangeDisplaySettingsEx", ça marche exactement pareil que la première fonction mais en premier paramètre, on rentre le numéro de l'écran. Voilà la déclaration :
Public Const CDS_TEST = &H4
Public Const CDS_UPDATEREGISTRY = &H1
Public Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" (lpszDeviceName As Any, lpDevMode As Any, ByVal hWnd As Long, ByVal dwFlags As Long, lParam As Any) As Long
(donc ByVal 0& pour le hWnd et ByVal 0& pour lparam. et pour dwFlags CDS_TEST pour tester la résolution, CDS_UPDATEREGISTRY pour mettre à jour le registre, sinon ByVal 0&)
Si tu choisis CDS_UPDATEREGISTRY, je crois (à vérifier) qu'il faut ajouter ça:
Déclaration:
Public Const HWND_BROADCAST = &HFFFF
Public Const HWND_DESKTOP = 0
Public Const WM_DEVMODECHANGE = &H1B
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Code juste après l'appel à ChangeDisplaySettingsEx:
Sinon pour l'histoire de savoir si ça marche sur toutes les cartes graphiques, normalement oui puisque c'est une fonction Win32, la même qui est utilisée quand tu change la résolution par le panneau de configuration. Donc pas d'incompatibilité avec telle ou telle carte graphique.
12 mars 2004 à 12:14
Beaucoup beaucoup même!
Fait tourner!
Je suis cette histoire avec intérêt!
Merci BasicInstinct
PS: j'espère que j'pourrai adapter ça avec mes surfaces DirectDraw!!
Bye les gens :)
12 mars 2004 à 11:57
MAJ tres prochainement :)))
@++
26 févr. 2004 à 17:57
Tu fait sa avec GetWindowsPos (ou un truc du genre) non ?
26 févr. 2004 à 17:36
Moi je m'en sert pour un serveur de Log qui est plein ecran sur l'ecran2 ou en systray si l'ecran est inactif.
Merci pour les commentaires :)
26 févr. 2004 à 16:54
J'ai également déja pensé à faire du multi écran, j'ai réfléchi à la technique mais pas passé à l'acte, plus besoin : les fenetres de windows, du moins les positions sont numérotées en je ne sais plus quelle unité (twips ou pixels). Si tu met dans le fom load d'une appli me.left=0, elle sera sur la bordure droite de l'écran 0. Apres, si tu as 2 écrans, le primaire est à droite et le 2eme a sa gauche, toujours pareil pour l'histoire du left = 0, mais si tu met par exemple me.left = -500, alors la elle fenetre sera sur l'autre écran ;) Apres a toi de trouver si l'éran 2 est a gauche, à droite, quelles dimensions (avec le code ici présent peut etre ? ;)) D'ailleur, il est utile est totalement fonctionnel ton code BasicInstinct, bravo;)
26 févr. 2004 à 15:02
Bon courage!
Autre chose, si tu sais comment faire afficher une form dans un autre écran que le 0 , ça m'intéresse. C'est pour faire du multi-écran avec mon écran de veille.
Bye!
26 févr. 2004 à 14:57
Merci
26 févr. 2004 à 14:51
Pour changer la résolution de l'écran 0, je suppose que tu utilises l'API "ChangeDisplaySettings"... Ben pour changer la résolution sur n'importe quel écran, utilise "ChangeDisplaySettingsEx", ça marche exactement pareil que la première fonction mais en premier paramètre, on rentre le numéro de l'écran. Voilà la déclaration :
Public Const CDS_TEST = &H4
Public Const CDS_UPDATEREGISTRY = &H1
Public Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" (lpszDeviceName As Any, lpDevMode As Any, ByVal hWnd As Long, ByVal dwFlags As Long, lParam As Any) As Long
Et l'appel :
ChangeDisplaySettingsEx(ByVal NumDevice&, DevMode, ByVal 0&, CDS_TEST, ByVal 0&)
(donc ByVal 0& pour le hWnd et ByVal 0& pour lparam. et pour dwFlags CDS_TEST pour tester la résolution, CDS_UPDATEREGISTRY pour mettre à jour le registre, sinon ByVal 0&)
Si tu choisis CDS_UPDATEREGISTRY, je crois (à vérifier) qu'il faut ajouter ça:
Déclaration:
Public Const HWND_BROADCAST = &HFFFF
Public Const HWND_DESKTOP = 0
Public Const WM_DEVMODECHANGE = &H1B
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Code juste après l'appel à ChangeDisplaySettingsEx:
SendMessage HWND_BROADCAST, WM_DEVMODECHANGE, 0, 0
SendMessage HWND_DESKTOP, WM_DEVMODECHANGE, 0, 0
Normalement ça marche, si j'ai rien oublié ;) ...
Sinon pour l'histoire de savoir si ça marche sur toutes les cartes graphiques, normalement oui puisque c'est une fonction Win32, la même qui est utilisée quand tu change la résolution par le panneau de configuration. Donc pas d'incompatibilité avec telle ou telle carte graphique.
A plus!