Form non déplaçable [Résolu]

wald39 68 Messages postés jeudi 5 janvier 2006Date d'inscription 23 février 2011 Dernière intervention - 6 avril 2007 à 10:43 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 6 avril 2007 à 15:37
Bourjour à tous,
Est ce que quelqu'un saurait comment empècher le déplacement d'une fenêtre ?
Merci d'avance.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 6 avril 2007 à 11:02
3
Merci
Salut,

trouvé sur les forums MSDN, a ajouter dans le code de ta Form

<hr />

protected
override
void WndProc(
ref
Message m)
{
   if (m.Msg 0x216 || m.Msg 0x214)
   { 

      RECT rc;
      rc.Left =
this.Left;
      rc.Top =
this.Top;
      rc.Bottom =
this.Bottom;
      rc.Right =
this.Right;

      Marshal.StructureToPtr(rc, m.LParam,
false);
      m.Result = (
IntPtr)1;

      return;
   }

   base.WndProc(
ref m);
}[

StructLayout(
LayoutKind.Sequential)]

public
struct
RECT
{

   public
int Left;

   public
int Top;

   public
int Right;

   public
int Bottom;
}
<hr />

Mx
MVP C# 

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de MorpionMx
Meilleure réponse
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 6 avril 2007 à 11:35
3
Merci
arrrrrggggg... la freetextbox

private const int WM_NCHITTEST = 0x84;
private const int HTCAPTION = 2;
private const int HTCLIENT = 1;


protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);


    if (m.Msg WM_NCHITTEST && m.Result new IntPtr(HTCAPTION)) {
        m.Result = new IntPtr(HTCLIENT);
    }
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 6 avril 2007 à 11:12
0
Merci
le plus simple est de faire une surcharge de WndProc et d'intercepter le message WM_NCHITTEST (0x84 si je me souviens bien)

et si la valeur retournée est HTCAPTION, on retourne HTCLIENT

exemple :

protected override void WndProc(ref Message m) {
   base.WndProc(ref m);
   
   if (m.Result == HTCAPTION) 
      m.Result = HTCLIENT;
}
avec : HTCAPTION 2 et HTCLIENT 1

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 6 avril 2007 à 11:22
0
Merci
oops... j'ai oublié un truc :

protected override void WndProc(ref Message m) {
   base.WndProc(ref m);
      if (m.Message WM_NCHITTEST && m.Result HTCAPTION) 
      m.Result = HTCLIENT;
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 6 avril 2007 à 11:33
0
Merci
après vérification... et correction, voici un code qui marche ;)

private

const
int WM_NCHITTEST = 0x84;

private
const
int HTCAPTION = 2;

private
const
int HTCLIENT = 1;

protected
override
void WndProc(
ref
Message m)
{

   base.WndProc(
ref m);
   if (m.Msg WM_NCHITTEST && m.Result
new
IntPtr (HTCAPTION)) {
      m.Result =
new
IntPtr(HTCLIENT);
   }
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 6 avril 2007 à 15:37
0
Merci
Seb, sur le forum Aogie avait donné une version plus élégante qui permet de préserver le double click sur la barre de titre.

private const int WM_NCLBUTTONDOWN = 0x00A1;
private const int HTCAPTION = 2;


protected override void WndProc( ref Message m )
{
    if ( m.Msg != WM_NCLBUTTONDOWN || m.WParam != ( IntPtr )HTCAPTION )
        base.WndProc( ref m );
}
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.