Réduire l'espace de travail du bureau pour accueillir une toolbar winform...

seup Messages postés 16 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 23 avril 2007 - 19 août 2004 à 16:57
wald39 Messages postés 68 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 23 février 2011 - 21 févr. 2006 à 10:19
Salut tout le monde...

Je cherche a faire une toolbar un peu comme celle de windows.
le but c'est qu'elle s'affiche sur la droite de mon écran et que toutes les fenetres ouvertes ne se superposent pas sur elle.
Il faut donc réduire l'espace de travail du bureau windows.
L'objet screen a bien une propriété WorkingArea mais on ne peut pas la modifier...

J'ai trouvé une source qui fait ca mais en vb6, si quelqu'un peut me donner des piste pour passer ca en .net, je serais votre humble serviteur jusqu'a la fin de mes jours ;)

la fameuse source vb6:
http://www.mentalis.org/vbexamples/vbexample.php?vbexample=APPBAR&category=SOURCE

Merci d'avance...

10 réponses

bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
20 août 2004 à 10:51
Ben tu peux essayer de faire ça avec des fenêtre MDI (chuis pas sur d'avoir compris mdr)

-------------------------
Trambert le vert
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 août 2004 à 14:10
je pense plutot qu'il veut faire comme pour la barre des taches en fait : qu'une fenetre maximisée ne passe pas au dessus de son form (et inversement)
j'ai deja vu mais pas moyen de me rappeler où

Cocoricoooooooo !!!!
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
20 août 2004 à 15:08
Form.TopMost = true; ......

-------------------------
Trambert le vert
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 août 2004 à 15:31
je suis pas sur que ce soit ce qu'il veut, en tout cas je parlais pas de ça

Cocoricoooooooo !!!!
0

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

Posez votre question
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
20 août 2004 à 16:38
Ouais je vois j'ai téléchargé le truc en VB.. Ben y a plus qu'a le porter en C#.. C'est long mais pas compliqué lol

-------------------------
Trambert le vert
0
seup Messages postés 16 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 23 avril 2007
24 août 2004 à 18:48
C'est exactement ca que je veux faire coq... t'as tout compris ;)
bucherb, je suis en train de tenter de porter le code VB6 en C# mais la je bloque... Comment on déclare des API en C# ?
Si quelqu'un a la réponse, merci d'avance !

L'autre problème c'est que ce code VB6 est super pointu ! je pense pas avoir besoin de tout ca, si quelqu'un peut m'aider a isoler la fonction qui redimmensionne le WorkArea (Espace Bureau) ca serait trop top les gars...
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
24 août 2004 à 19:00
Pour les API regarde du coté de DllImport

Cocoricoooooooo !!!!
0
wald39 Messages postés 68 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 23 février 2011 7
20 févr. 2006 à 19:30
Bjr, je c ke le sujet est vieu, mai moi jai trouver qu'il fallait utiliser la dll user32.dll, jusque la pa de pb je v vous montrer :

voici ma class Bureau ainsi ke Rect
using System;
using System.Runtime.InteropServices;

namespace ToolBarWMP1
{
[StructLayout(LayoutKind.Sequential)]
public class RECT : ICloneable
{
public int Left;
public int Top;
public int Right;
public int Bottom;
#region Membres de ICloneable

public object Clone()
{
RECT oRECT = new RECT(); oRECT.Top this.Top; oRECT.Bottom this.Bottom; oRECT.Left this.Left; oRECT.Right this.Right;
return oRECT;
}

#endregion
}

public class Bureau
{
#region API
[DllImport("user32.dll", EntryPoint="SystemParametersInfoA")]
private static extern int SystemParametersInfo (int uAction, int uParam, ToolBarWMP1.RECT lpvParam, int fuWinIni);

private const int SPI_GETWORKAREA = 48;
private const int SPI_SETWORKAREA = 47;
private const int SPIF_SENDCHANGE = 2;
#endregion

public static void getWorkspace(RECT oRECT)
{int iResult = SystemParametersInfo(SPI_GETWORKAREA,0,oRECT,0);}

public static int setWorkspace(RECT oRect)
{return SystemParametersInfo(SPI_SETWORKAREA,0,oRect,SPIF_SENDCHANGE);}

}
}

je les utilise com ceci :
private RECT m_RECTInit = new RECT();

private void Form1_Load(object sender, System.EventArgs e)
{
//Sauvegarde de l'ancien bureau
Bureau.getWorkspace(m_RECTInit);
this.Left = m_RECTInit.Left;
this.Top = m_RECTInit.Top;

this.Width = m_RECTInit.Right;
this.Height = 32;

//Création du nouveau bureau
RECT oRECT = (RECT) m_RECTInit.Clone();
oRECT.Bottom= m_RECTInit.Bottom-this.Height;
Bureau.setWorkspace(oRECT);
}

private void Form1_Closed(object sender, System.EventArgs e)
{
Bureau.setWorkspace(m_RECTInit);
}

Voila se ke jai fais mais l'espace de travail n'est pa redimensionner ma barre s'affiche bien en haut com je le veut mais les fenetres peuvent passer en dessous, je voudrait vraiment realiser une barre comme la barre des taches ou rien ne peu passer dessus ou en-dessous, alor si kelkun peu m'aider . Merci d'avance
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
21 févr. 2006 à 09:18
Euh la barre des taches tu peux tout à fait mettre tes fenêtre dessous si le coeur t'en dit....

Est-ce que c'est au niveau des fenêtres en plein écran que ça bloque?

-------------------------
Trambert le vert
0
wald39 Messages postés 68 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 23 février 2011 7
21 févr. 2006 à 10:19
oui les fenetres en plein ecran passe sous ma barre. Et moi je ne veu pas kel puisse passe dessous, je veux redimensionner l'espace de travail du bureau
0
Rejoignez-nous