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

Windows Discussion :

Couleur d'un GROUPBOX


Sujet :

Windows

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut Couleur d'un GROUPBOX
    Bonjour,
    Je souhaiterai modifier la couleur d'un "bouton" de style "BS_GROUPBOX" qui apparament utilise la couleur "WINDOW_FRAME" (???)

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Renseigne toi sur l'"owner drawing".

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Renseigne toi sur l'"owner drawing".
    Le style "BS_OWNERDRAW" ?
    Si oui il faut traiter le message WM_DRAWITEM, donc cela revient à le redessiner , ou penses tu à autre chose ?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Non, avec WM_CTLCOLORBTN qui te permet de modifier le HDC utilisé et surtout de renvoyer la brosse à utiliser. Je crois que ça ne marche pas pour les pushbutton, mais tu es chanceux tu utilises un groupbox.
    Par contre je ne me souviens plus s'il faut ou non le style BS_OWNERDRAW pour recevoir cette notification.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Non, avec WM_CTLCOLORBTN qui te permet de modifier le HDC utilisé et surtout de renvoyer la brosse à utiliser. Je crois que ça ne marche pas pour les pushbutton, mais tu es chanceux tu utilises un groupbox.
    Par contre je ne me souviens plus s'il faut ou non le style BS_OWNERDRAW pour recevoir cette notification.
    Visiblement il n'intercepte pas le message WM_CTLCOLORBTN et avec le style BS_OWNERDRAW il ne dessine plus rien !
    Je vais essayer avec BS_OWNERDRAW et en interceptant le message WM_DRAWITEM et la structure passée (DRAWITEMSTRUCT) ...

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    WM_CTLCOLORBTN ne doit pas être traité n'importe comment, montre comment tu fais.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    WM_CTLCOLORBTN ne doit pas être traité n'importe comment, montre comment tu fais.
    Voilà ma procedure, mais elle est en cours de mise au point ... :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    BOOL CALLBACK PrefDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam)
    {
    INITCOMMONCONTROLSEX icex;
    TCITEM tie;
    NONCLIENTMETRICS nct;
    RECT   rect;
    #define lpnmHDR ((NMHDR *)lParam)
    static HWND hwnd;
    static HWND hParent;
    static HWND hwndTab;
    //static HWND hTab[2];
    HFONT hFont;
    static HICON hicon;
    static HBRUSH hBrush3;
    static COLORREF RGBMODIF  = RGB(0, 160, 0);
    static int i, iPage;
    char onglet[2][20] = {"Onglet 1", "Onglet 2" };
    char tmp[10];
    DWORD dwDlgBase = GetDialogBaseUnits(); 
    int cxMargin = LOWORD(dwDlgBase) / 4; 
    int cyMargin = HIWORD(dwDlgBase) / 8;
       switch (message)
       {
       case WM_INITDIALOG:
            hBrush3 = CreateSolidBrush (RGBMODIF);
            nct.cbSize = sizeof(NONCLIENTMETRICS);
            SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &nct, 0);
            hFont =  CreateFontIndirect(&nct.lfMenuFont);
            icex.dwSize = sizeof(icex);
            icex.dwICC  = ICC_TAB_CLASSES;
            hwndTab = GetDlgItem (hDlg, IDC_TAB1); 
     
            InitCommonControlsEx(&icex);
            GetClientRect(hDlg, &rect);
            SendMessage (hwndTab, WM_SETFONT, (UINT)hFont, 0);
            tie.mask = TCIF_TEXT; 
            tie.pszText = onglet[0];
            TabCtrl_InsertItem(hwndTab, 0, &tie);  
            tie.pszText = onglet[1];
            TabCtrl_InsertItem(hwndTab, 1, &tie);
    //Static Maitre Page 1
            hTab[0] = CreateWindowEx(WS_EX_LEFT|WS_EX_CLIENTEDGE,
                     "static", "", WS_CHILD | WS_VISIBLE,
                     0, 24, rect.right-rect.left, rect.bottom-rect.top,      
                     hwndTab, NULL, hInst, NULL);
            lpfnWndProc = (FARPROC)SetWindowLong(hTab[0],GWL_WNDPROC, (DWORD) ProcPage1);
            hTab[10] = CreateWindow("Button", "",
                              WS_VISIBLE|WS_CHILD|BS_GROUPBOX, // |BS_OWNERDRAW ,
                              25,50,500,150, hTab[0], NULL, hInst, NULL);
      SendMessage (hTab[10], WM_SETFONT, (UINT)hFont, 0);
            SetWindowText (hTab[10], "La Banque sur Internet ...");
            hTab[11] = CreateWindowEx(WS_EX_LEFT|WS_EX_CLIENTEDGE,
                     "static", "", WS_CHILD | WS_VISIBLE,
                     90, 80, 20, 18,      
                     hTab[0], NULL, hInst, NULL);
            SendMessage (hTab[11], WM_SETFONT, (UINT)hFont, 0);
            SetWindowText (hTab[11], "Url");
            hTab[12] = CreateWindowEx(WS_EX_LEFT|WS_EX_CLIENTEDGE,
                     "edit", "", WS_CHILD | WS_VISIBLE,
                     115, 80, 380, 18,      
                     hTab[0], NULL, hInst, NULL);
            SendMessage (hTab[12], WM_SETFONT, (UINT)hFont, 0);
    //Static Maitre Page 2
            hTab[1] = CreateWindowEx(WS_EX_LEFT|WS_EX_CLIENTEDGE,
                     "Edit", "", WS_CHILD,    
                     55, 60, 100, 18,      
                     hwndTab, NULL, hInst, NULL);
     
            return TRUE ;
    /*
       case WM_CTLCOLORBTN :
            if ((HWND)lParam == hTab[10])    {
                SetBkColor ((HDC)wParam, RGBMODIF);
                return ((DWORD) hBrush3); }
         return 0;
    */  
       case WM_NOTIFY :
         if (lpnmHDR->code == TCN_SELCHANGE) {
         iPage = TabCtrl_GetCurSel(hwndTab);
               for (i = 0; i < N_PAGES; i++)
           ShowWindow(hTab[i], (i==iPage)? SW_SHOW : SW_HIDE);
      }
            return 0;   
       case WM_COMMAND:
          switch (wParam)
          {
          case IDOK:
          case IDCANCEL:
               DestroyWindow(hTab[0]);
         DestroyWindow(hTab[1]);
            EndDialog (hDlg, 0) ;
            return TRUE ;
          }
          break ;
       }
       return FALSE ;
    }

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Je me demande si le groupbox n'utilise pas simplement la couleur de fond de son parent. Je ne crois pas que l'on puisse modifier le fond d'un groupbox, autrement qu'en modifiant le fond de son parent (WM_CTLCOLORDLG).

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Je me demande si le groupbox n'utilise pas simplement la couleur de fond de son parent. Je ne crois pas que l'on puisse modifier le fond d'un groupbox, autrement qu'en modifiant le fond de son parent (WM_CTLCOLORDLG).
    Je pense que j'approfondirais le problème un peu plus tard ....
    Merci encore.

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

Discussions similaires

  1. Couleur de police Groupbox
    Par Teddy dans le forum Débuter
    Réponses: 24
    Dernier message: 14/03/2012, 18h40
  2. groupbox label récuperer couleur visual studio
    Par Teatimerelax dans le forum Visual Studio
    Réponses: 0
    Dernier message: 27/07/2009, 22h31
  3. Problème avec couleur de GroupBox.
    Par melles dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/09/2008, 11h37
  4. XPManifest et couleur des GroupBox
    Par WebPac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 20/03/2008, 09h42
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 16h23

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