Screen !

Signaler
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020
-
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
-
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

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
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 !?
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020

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
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020

Apparement personne n a de solution.....

Herve
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
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 !?
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020

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
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
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 !?
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020

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
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
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 !?
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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