Api et sidebar

Résolu
misterglacon Messages postés 17 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 23 février 2005 - 22 févr. 2005 à 09:01
misterglacon Messages postés 17 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 23 février 2005 - 23 févr. 2005 à 09:36
Bonjour,
j'ai récemment fait une sidebar en vb.net dans le genre de http://www.desktopsidebar.com/

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

Si vous avez des idées allez y !

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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...

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : http://www.ProgOtoP.com/popapi/
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
misterglacon Messages postés 17 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 23 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é.......
0
misterglacon Messages postés 17 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 23 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.
0
Rejoignez-nous