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 :

Modifier la couleur de la bordure d'une fen�tre


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut Modifier la couleur de la bordure d'une fen�tre
    Bonjour,

    J'utilise c++ builder XE, mais je pense que �a n'a pas vraiment d'importance.
    J'ai vu quelques posts sur le sujet mais sans trouver de solutions, j'ai du mal � croire que cela ne soit pas possible !!!
    Je veux donc changer la couleur de la bordure des fen�tres de mon application afin d'utiliser les couleurs de la charte graphique de mon client.
    Mais impossible de trouver comment faire, c'est dingue non ???

    merci !
    Pascale38

  2. #2
    Membre chevronn� Avatar de hariman
    Homme Profil pro
    D�veloppeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activit� : D�veloppeur Java, Android
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par d�faut
    Bonjour,

    Je crains que les bordures de fen�tres ne soient personnalisables, �a doit correspondre au th�me de Windows.

    Si j'�tais toi, j'enl�verais ces bordures.
    Il existe plusieurs fonctions dans l'API Windows pour manipuler les fen�tres.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    C'est compl�tement aberrant de ne pas pouvoir choisir la couleur non ???
    Le probl�me c'est que dans la charte graphique du client, il a les bordures windows classiques avec ic�nes etc... Je ne peux donc pas les enlever !!

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Il est aussi possible de faire une fen�tre sans bordure (BorderStyle � bsNone), et de dessiner soit-m�me les coutours, la m�thode OnPaint est con�u pour cela !
    Peut-�tre qu'en coutournant la WndProc on peut acc�der au Bordure ... mais bon, il faut penser qu'en 2K c'est 2 pixels, en XP c'est 5, et Vista c'est 10 ... � chaque version de l'OS, il y a un th�me diff�rent !

    Apr�s si le client est assez d�bile pour accepter une charte graphique non conforme au syst�me d'exploitation, celui qui lui a vendu �a est un charlatan ou un incomp�tent pour ne pas le savoir !
    En plus, cela va lui co�ter plus cher pour juste un aspect graphique, et la reproduction des �lements retirer par bsNone comme le glissement ou agrandissment de la fen�tre !
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    En effet, en fait on est pas sens� chang� la couleur des bordures...
    Y'en a juste un dans la boite qui a fait un doc pour l'aspect de l'appli en question et qui a un peu trop extrapol� la charte graphique, mort de rire !!

    D�sol�e pour le d�rangement !!!

    merci et bonnes f�tes � tous !!

    Pascale38

  6. #6
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Avec un Hook sur le message WM_PAINT, tu peux redessiner par dessus une autre application, y compris dans la Barre de Taches et les bordures !
    WM_PAINT est contournable dans la WndProc

    Je l'ai d�j� fait � titre exp�rimental en Delphi, tient voici une traduction en C++Builder

    Code : 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
    void __fastcall TVCLManipForm::FormPaint(TObject *Sender)
    {
      TRect WindowRect = this->BoundsRect;
      WindowRect = Rect(0, 0, WindowRect.Width(), WindowRect.Height());
     
      HDC DCHandle = GetWindowDC(WindowHandle);
      HBRUSH BrushHandle = CreateSolidBrush(clRed);
     
      FrameRect(DCHandle, &WindowRect, BrushHandle);
      InflateRect(&WindowRect, -1, -1);
      FrameRect(DCHandle, &WindowRect, BrushHandle);
      InflateRect(&WindowRect, -1, -1);
      FrameRect(DCHandle, &WindowRect, BrushHandle);
     
      DeleteObject(BrushHandle),
      ReleaseDC(WindowHandle, DCHandle);
    }
    Je te laisse appr�cier l'instabilit� de la chose, cela doit pouvoir s'am�liorer !
    Il faut aussi capturer WM_SIZE et WM_ERASEBKGND ... comme dans ajuster la taille de l'image avec de la form c'est pour dessiner une image dans la zone client d'un MDI, tu peux l'adapter pour le contour !



    Sinon, tu peux aussi changer les couleur de l'OS, tu peux changer pour l'ensemble du compte ! cela impactera les bordures !
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    Oui je sais qu'on peut changer les couleurs de l'OS, mais dans le doc il est bien pr�cis� :
    "Les couleurs de bandeau et texte doivent etre ind�pendant du systeme Windows sur lequel l�application est lanc�e."

    Merci pour ton code, pour l'instant je vais en rester l�, je verrai au retour de vacances du client !!

  8. #8
    Membre �m�rite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par d�faut
    Tu peux aussi hooker le message Windows WM_NCPAINT. L'avantage c'est que le syst�me l'envoie quand il le faut, ce qui �vite de traiter les autres messages (WM_SIZE, etc...):

    Fichier .h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
      void __fastcall MessageNcPaint(TMessage &Message);
     
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_NCPAINT, TMessage, MessageNcPaint)
    END_MESSAGE_MAP(TControl)
    Fichier .cpp
    Code : 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
    void __fastcall TForm1::MessageNcPaint(TMessage &Message)
    {
      HDC hdc;
      RECT Rect;
      int i;
     
      hdc = GetDCEx(Handle, (HRGN) Message.WParam, DCX_WINDOW | DCX_INTERSECTRGN | 0x10000);
     
      // Paint into this DC
      GetWindowRect(Handle, &Rect);
      Rect.right -= Rect.left; Rect.left = 0;
      Rect.bottom -= Rect.top; Rect.top = 0;
      SelectObject(hdc, GetStockObject(BLACK_PEN));
      for (i = 0; i < 5; i++) {
        Rectangle(hdc, Rect.left, Rect.top, Rect.right, Rect.bottom);
        InflateRect(&Rect, -1, -1);
      }
     
      ReleaseDC(Handle, hdc);
    }

  9. #9
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738

Discussions similaires

  1. Modifier la couleur des diff�rentes cases d'une uitable
    Par yop3112 dans le forum Interfaces Graphiques
    R�ponses: 1
    Dernier message: 06/07/2015, 18h16
  2. Modifier la couleur de bordure d'une fen�tre WPF
    Par SandyF dans le forum Windows Presentation Foundation
    R�ponses: 2
    Dernier message: 21/09/2010, 18h29
  3. Modifier la couleur d'un lien depuis une frame
    Par emmeline.a dans le forum G�n�ral JavaScript
    R�ponses: 16
    Dernier message: 30/07/2010, 14h36
  4. Modifier la couleur de ma police d'une colonne d'un datagridView
    Par skunkies dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 03/12/2008, 16h52

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