Screen !

Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 13 mai 2005 à 19:18
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 13 avril 2012 à 10:07
Slu



est il possible de mettre a jour la variable screen ?

car dans certain cas elle n est pas mis a jour !

Herve

18 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
14 mai 2005 à 17:14
Salut,

Qu'appelles tu "variable screen" ?
Screen est un objet qui ne possède pas de méthode refresh (en vb6, comme en vb.net à ma connaissance).
Donne un peu plus de précisions stp.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
14 mai 2005 à 17:24
Salut



En fait j essaie, pour mon prog, d afficher une fenetre d informations qui se met en bas a droite.

Et pour calculer la position de la fenetre il me faut connaitre les
dimensions de l ecran que je recupere avec Screen.Height et
Screen.Width.

Tout marche nickel...mais je me suis rendu compte que lorsque de change
de resolution (par exemple pour un jeu) et que windows revient a la
resolution d origine la variable Screen.width n a pas la bonne valeur
mais la meme que Screen.Height , donc la fentre ne s affiche plus en
bas a droite mais en bas et au milieu (un peu pres) !

Herve
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
15 mai 2005 à 20:23
Apparement personne n a de solution.....

Herve
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
15 mai 2005 à 21:05
Personne ? Je ne sais pas. J'ai fait des essais et effectivement, quelles que soient les méthodes que j'ai utilisées :
Si tu redémarres la machine après modif de la résolution, ça fonctionne. Sinon, ça donne ce que tu as décris.
Désolé, je n'ai pas LA solution.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
16 mai 2005 à 13:29
Slu



j ai trouve une soluce !



je recupere la resolution de l ecran a l aide de : EnumDisplaySettings

et ensuite je multiplie la resolution par TwipsPerPixelX ou TwipsPerPixelY pour obtenir la bonne valeur !

Herve
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
16 mai 2005 à 14:29
Bien vu, entretemps, j'ai trouvé une astuce qui évite de se servir de l'api.

J'ai remarqué que lors du changement de résolution de l'écran, screen.width renvoyait la même valeur que screen.height. Bug de VB ?
Etant donné que la résolution de l'écran est 4/3, en connaissant le height on a le width. screen.width = screen.height * 4 / 3, donc résultat 2 toutes petites lignes :

Private Sub Form_Load()

Me.Top = Screen.Height - Me.Height
Me.Left = (Screen.Height * 4 / 3) - Me.Width

End Sub

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
16 mai 2005 à 15:01
Ton astuce n est pas juste car le ratio de la resolution d un ecran est
bien de 4/3 mais il peut etre egalement de 5/4 (par exemple 1280*1024)
et d autre encore !

Herve
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
16 mai 2005 à 15:28
Effectivement, j'avais oublié ces résolutions peu courantes.
Finalement, tu as raison, vaut mieux utiliser l'api.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
12 avril 2012 à 15:07
Bonjour,

Je me permets de relancer la discussion car j'ai eu un problème similaire à ceci près que nul n'était besoin de changer la résolution pour avoir ce bug (car je pense que c'en est un).

Sans jamais changer ma résolution native (1920 * 1200 soit 16/10èmes), tout marchait nickel en mode debug. Par contre, une fois compilé et en lançant l'EXE j'obtenais effectivement la hauteur à la place de la largeur. Le recours à l'API a bien entendu résolu le problème.

Reste 2 questions, pourquoi ce bug (?) n'a jamais été soulevé sur les forums (du moins ceux que j'ai visité) et pourquoi n'ai-je jamais remarqué ça avant alors que j'utilise cet objet depuis des lustres dans mes applications et ce sans problème.

Si quelqu'un a une idée histoire de faire avancer le schmilblick...


Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 avril 2012 à 17:12
Bonjour,
Reste 2 questions, pourquoi ce bug (?) n'a jamais été soulevé sur les forums (du moins ceux que j'ai visité)

Tout simplement parce qu'il n'y a pas de bug !
On y va ?
1) les dimensions de l'écran sont exprimés en Twips
2) les positions du Form également
En conséquence ===>>> Exemple ici pour centrer le Form ===>>
Private Sub Form_Load()
  Me.Top = (Screen.Height - ScaleY(Me.ScaleHeight, ScaleMode, vbTwips)) / 2
  Me.Left =  (Screen.Width - ScaleY(Me.ScaleWidth, ScaleMode, vbTwips)) / 2
End Sub

Sera toujours vrai, quelles que soient tant la résolution de l'écran que l'échelle (scalemode) du Form.
Toujours calculer les positions en twips
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 avril 2012 à 17:15
Gaffe (cela m'apprendra à cesser d'écrire à main levée !) ===>> c'est ScaleX et non Scaley, à la 2ème ligne.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 avril 2012 à 18:04
J'ai également teste avec position qui "posait problème", à savoir :
donc la fentre ne s affiche plus enbas a droite mais en bas et au milieu (un peu pres) !

Pas de problème avec ma méthode de calcul.
J'attends toutefois avec assez d'impatience (je ne le cache pas ) une remarque éventuelle sur le top ===>> la réponse "fusera"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2012 à 08:10
Salut ucfoutu,

Entièrement d'accord avec toi, toutes les dimensions sont données en twips.
Mais perso', je parlais de l'objet screen dont la propriété Width renvoyait un résultat erroné en exécution normale et correct en mode debug. Je sais que j'ai d'autres bugs qui ne se manifestent que dans les mêmes conditions et que je n'ai toujours pas réussi à fixer, mais celui-là me parait un peu fort de café.

Quant aux propriétés Scale, j'avoue que j'ai du mal à en comprendre le fonctionnement !

Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 avril 2012 à 08:25
Je voudrais simplement te rappeler ce que je t'ai dit en février dernier, à propos de certaines manipulations sans les assortir d'une vérification des capacités de l'écran (ce qui, dans certains cas, peut de surcroît être dangereux) :
Je ne saurais essayer avec 1920 * 1200 (le max, est sur mon écran 1440 x 900)
Je n'ai par contre eu aucune difficulté dans le sens aller, de 1280*1024 vers 1440 x 900
Dans le sens retour vers config d'origine , par contre : impossible et pour cause : config anormale qui nécessiterait le redémarrage de la machine (comme dit dans le panneau de config).



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2012 à 08:34
Absolument mais dans ce cas il n'y a aucun changement de résolution avant ou après.
Au départ j'avais pensé que le problème venait que la form était situé dans une DLL. Je l'ai donc déplacé dans l'EXE principal sans résultat.

De plus je l'ai d'abord vu sur un résolution dite standard (1920 * 1080) puis ensuite sur la mienne (qui soit dit en passant est toute aussi standard puisque c'est celle préconisée par le fabricant (16/10ème soit 1920 * 1200) beaucoup plus confortable que les résolutions des portables.

En février, j'avais effectivement besoin de modifier la résolution au vol, mais là non, même si c'est la même appli. C'est un hasard.

Pour tout te dire et pour faire taire tes scrupules cette appli tourne chez ma mère et est donc écrite sur mesure. Donc pas destiné à être commercialisée.

En tout cas merci de ton aide.

Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 avril 2012 à 09:37
Je ne sais que te répondre, puisque, n'ayant pas un tel écran, je ne peux rien tester.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 avril 2012 à 09:41
J'ai par contre (comme dit plus haut) constaté que le reproche objet de la discussion ouverte n'est, lui, aucunement fondé et n'a d'explications que dans la mauvaise connaissance des unités utilisées.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2012 à 10:07
J'ai longtemps travaillé sur un écran 4/3 (1280 * 1024) qui m'allait très bien si ce n'est sur certains sites Web qui m'obligeaient à user de l'ascenseur horizontal que je n'aime pas.
Quand je me suis décidé à investir j'ai commencé par essayer un écran dit "standard" 16/9 en 1920 * 1080, mes photos paraissaient rapetissées (je sais ce n'est que subjectif) mais vu l'accroissement de la largeur, la hauteur n'avait pas bougé (ou si peu). J'ai finalement opté pour un 16/10 (1920 * 1200) et c'est nettement plus confortable. J'ai toujours été gêné par les résolutions bâtardes des portables (133x * 766) pour le mien qui sont vraiment ridicules mais c'est le prix de la mobilité mais développer dessus... Mais on s'éloigne du sujet.

Quant au bug présumé, ce n'est peut-être qu'un problème du à la méconnaissance des propriétés scale. Comme je te l'ai dit, je n'ai pas encore tout compris dessus et ne les utilises donc pas.

Il n'en reste pas moins que jusqu'à maintenant (depuis environ 10 ans que je suis sous VB6) je n'avais jamais eu de problème avec Screen.Width. Mystère !

Calade
0
Rejoignez-nous