Quand je lance ma sidebar l'espace du bureau diminue ainsi ma barre ne cache pas d'icone comme le menu démarrer. Seulement lorsque je modifie la taille du bureau toutes les fenêtres qui étaient ouvertes à ce moment ne sont pas redimensionnées, certaines "croient" que l'espace du bureau est plus grand qu'il ne l'est (comme si je n'avais pas lancé ma sidebar).
Je voudrais donc savoir si il existe une Api capable de rafraichir les dimensions des fenêtres et les redimensionner après avoir utilisé l' Api SetWorkspace pour modifier la taille du bureau.
J'ai essayé :
- UpdateWindow sans succès
- Et même d'utiliser le Schell32 pour minimizer toutes les fenêtres active puis annuler mais ça ne marche pas à tous les coups
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 févr. 2005 à 13:56
Oups, en effet, je n'avais pas compris ton problème.
Oui, il faut sûrement forcer le redimensionnement de toutes les
fenêtres, car cela ne doit pas être fait automatiquement pas Windows !
Il faut donc récupèrer les handles de toutes les fenêtres visibles (va
voir ma source nommée Anti-pub par exemple), et les forcer à les
réafficher, ou les redimensionner. Teste avec la fonction SetWindowPos
ou ShowWindow...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 févr. 2005 à 10:20
Il faut utiliser la fonction SystemParametersInfo avec le flag
SPI_SETWORKAREA qui permet de définir la taille de l'écran utilisable
(sans la barre des tâches, et donc, sans ta sidebar également).
Voir ma source de feuille magnétique pour un exemple concret d'utilisation de cette fonction, mais avec le flag SPI_GETWORKAREA
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
misterglacon
Messages postés17Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention23 février 2005 22 févr. 2005 à 13:43
Merci pour la reponse rapide DARKSIDIOUS
mais excuse moi je me suis pas très bien fait comprenre (heureusement que j'ai pas posté sur un forum anglais lol)
Enfet ma sidebar elle marche j'utilise déja l'api que tu m'a recommandé avec getworkarea, setworkarea....
Le seul problème (un détail) si j'ai des fenêtres qui sont maximisées et que je lance ma sidebar les fenêtres maximisées restent à la même taille il faut que je les réduises puis réagrandisse pour qu'elle prennent en compte la nouvelle taille du bureau :
Moi je voudrais que au lancement de ma sidebar toutes les fenêtres activent se redimensionne de telle sorte de rentrer dans l'espace qui leur est alloué ^^ (sur l'image la fenêtre de visual studio sort du "workspace"
si une fois ma sidebar lancé je réduis puis réagrandie la fenêtre de l'image au dessus il se passe :
En gros c'est ce que je voudrais dès le départ !
si vous avez encore des idées elles sont les bien venues !
j'ai cherché sur msdn, et d'autres forums, apperement il faut envoyé un sendmessagetimeout (api) à toutes les fenêtres mais je n'y suis pas arrivé.......
misterglacon
Messages postés17Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention23 février 2005 23 févr. 2005 à 09:36
merci
j'ai donc utilisé l'api setwindowpos en faisant une boucle sur toutes les fenêtres visibles et avec les "flags" :
SWP_NOMOVE
Or SWP_NOSIZE
Or SWP_NOZORDER
Or SWP_FRAMECHANGED
ça marche très bien au chargement de ma sidebar, mais lol au déchargement c'est pas encore ça enf1 ma sidebar est censée se décharger à la fermeture de windows donc c'est pas trop grave.