Empecher déplacement d'une fenêtre

Résolu
trafounet Messages postés 37 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 décembre 2006 - 23 juin 2006 à 14:35
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 23 juin 2006 à 17:51
Bonjour à tous,
j'essaie d'empecher le déplacement d'une fenêtre au dela d'une certaine limite lorsque l'utilisateur tente de le faire avec la souris.

voila à quoi ressemble mon code:

case WM_MOVE:{
             RECT Rect;
             GetWindowRect(hwnd, &Rect);
             if(Rect.left<100)
             SetWindowPos(hwnd,0,100,Rect.top-26,500,Rect.bottom,0);
             break;
             }

la deja je comprend pas, la fenetre est redessiné "plus en bas" que sa position initiale (d'ou le -26)

mais le problème c'est que ca scintille énormément puisque la fenetre est à chaque foi déplacé puis replacé, ce serait donc mieux (et plus logique) de directement empecher le deplacement de la fenetre mais je sais pas comment faire
j'ai essayer faire un break sur WM_MOVING mais ca ne marche pas donc si quelqu'un a la solution j'attend avec impatience

3 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juin 2006 à 14:49
Exemple pour empêcher la fenêtre d'aller trop à gauche:

#define LIMIT 100

...
case WM_MOVING:
    if(((LPRECT)lParam)->left < LIMIT)
    {
      int dx = LIMIT - ((LPRECT)lParam)->left;
      ((LPRECT)lParam)->left = LIMIT;
      ((LPRECT)lParam)->right += dx; // pour garder la même taille de fenêtre
    }
    // Appeler de DefWindowProc ensuite

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
trafounet Messages postés 37 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 décembre 2006
23 juin 2006 à 16:04
C'est exactement ce que je cherchais, merci pour ta réponse aussi rapide!
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
23 juin 2006 à 17:51
:D vu que le problème est résolu pourrais-tu accepter la réponse ? svp ;)
0
Rejoignez-nous