IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Redimensionnement en BsNone


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Par défaut Redimensionnement en BsNone
    Bonjour à vous !
    Est-il possible de redimensionner une fenêtre en BorderStyle=BsNone ?
    J'entend pas là, comment puis faire pour que l'utilisateur final puisse changer la taille de la fenêtre de la même façon qu'avec les fenêtres en BsNormal ?

    En vous remerciant.

  2. #2
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Redefinit la fonction CreateParams de TForm1


    Code Unit.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void __fastcall CreateParams(TCreateParams& Params);

    Code Unit.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::CreateParams(TCreateParams& Params)
    {
      TForm::CreateParams(Params);
      Params.Style = WS_POPUP | WS_SIZEBOX;
    }
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Par défaut
    Nikel !
    Merci CGi.

    Est-il possible de faire disparaitre les bordures qui sont visibles lorsque l'on utilise cete methode ?

  4. #4
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Une piste :

    Tu intercepte le message WM_NCPAINT (C'est le message de dessin de la zone non client d'une fenêtre)

    Tu lui associe une fonction membre (OnNCPaint dans l'exemple)
    Que tu laisse vide (c'est à dire qui ne dessine rien)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    private:	// Déclarations de l'utilisateur
            void __fastcall CreateParams(TCreateParams& Params);
            void __fastcall OnNCPaint(TMessage &Message);
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
    
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_NCPAINT, TMessage, OnNCPaint);
    END_MESSAGE_MAP(TForm);
    };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::OnNCPaint(TMessage &Message)
    {
    
    }
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  5. #5
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Une autre solution est de gérer toi même les dimensionnements :


    Par exemple sur les événements OnMouseDown, OnMouseUp et OnMouseMove D'une Form ayant son BorderStyle à bsNone :


    Code Unit1.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class TForm1 : public TForm
    {
    __published:    // Composants gérés par l'EDI
            void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
            void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift,
              int X, int Y);
            void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
    private:    // Déclarations de l'utilisateur
            bool SizeH;
            bool SizeV;
    public:        // Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
    };

    Code Unit1.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
           if (X>(Width-8) && Button == mbLeft) SizeH = true;
           if (Y>(Height-8) && Button == mbLeft) SizeV = true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
          if(SizeH == true) Width = X;
          if(SizeV == true) Height = Y;
          if (X>(Width-8)) Cursor = crHSplit;
            else
               if (Y>(Height-8)) Cursor = crVSplit;
                 else Cursor = crDefault;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
          SizeH = false;
          SizeV = false;
    }
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Kylix] Fenêtres non redimensionnables
    Par fred78 dans le forum EDI
    Réponses: 2
    Dernier message: 01/12/2002, 14h08
  2. [VB6] [Interface] Redimensionnement automatique
    Par ychalan dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2002, 18h32
  3. redimensionnement d'une JWindow
    Par mbp566 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/08/2002, 03h41
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo