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

MFC Discussion :

[API] Changement de Background


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 18
    Points
    18
    Par défaut [API] Changement de Background
    Bonjour, je commence depuis peu avec l'API Win32 et je voudrai changer le background de ma fenêtre pendant l'exécution de mon programme, parce que je sais qu'on peut s'en occuper lors de la création de la fenêtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WNDCLASS wc;
    wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    Par exemple...

    J'ai vu aussi le message WM_ERASEBKGND, mais j'ai pas très bien saisi son rôle, j'aimerais bien avoir quelques explications... merci

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux utiliser SetBkColor

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par nico-pyright(c)
    tu peux utiliser SetBkColor
    Tu veux dire dans le message WM_ERASEBKGND ?

  4. #4
    mat.M
    Invité(e)
    Par défaut Re: [API] Changement de Background
    Citation Envoyé par Taron31
    J'ai vu aussi le message WM_ERASEBKGND, mais j'ai pas très bien saisi son rôle, j'aimerais bien avoir quelques explications... merci
    Avant de faire ce genre de chose il faut bien piger ( et dieu sait si c'est un peu complexe) l'architecture d'une application Windows, la boucle de messages d'une fenêtre.

    Pour traiter WM_ERASEBKGND il suffit de traiter ce message avec un case WM_ERASEBKGND.....break et placer le code correspondant

    WM_ERASEBKGND
    The WM_ERASEBKGND message is sent when the window background must be erased (for example, when a window is resized). The message is sent to prepare an invalidated portion of a window for painting.

    A window receives this message through its WindowProc function.

    LRESULT CALLBACK WindowProc(
    HWND hwnd, // handle to window
    UINT uMsg, // WM_ERASEBKGND
    WPARAM wParam, // handle to device context (HDC)
    LPARAM lParam // not used
    );
    Parameters
    wParam
    Handle to the device context.
    lParam
    This parameter is not used.
    Return Values
    An application should return nonzero if it erases the background; otherwise, it should return zero.

    Remarks
    The DefWindowProc function erases the background by using the class background brush specified by the hbrBackground member of the WNDCLASS structure. If hbrBackground is NULL, the application should process the WM_ERASEBKGND message and erase the background.

    An application should return nonzero in response to WM_ERASEBKGND if it processes the message and erases the background; this indicates that no further erasing is required. If the application returns zero, the window will remain marked for erasing. (Typically, this indicates that the fErase member of the PAINTSTRUCT structure will be TRUE.)

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Re: [API] Changement de Background
    Citation Envoyé par mat.M
    Citation Envoyé par Taron31
    J'ai vu aussi le message WM_ERASEBKGND, mais j'ai pas très bien saisi son rôle, j'aimerais bien avoir quelques explications... merci
    Avant de faire ce genre de chose il faut bien piger ( et dieu sait si c'est un peu complexe) l'architecture d'une application Windows, la boucle de messages d'une fenêtre.

    Pour traiter WM_ERASEBKGND il suffit de traiter ce message avec un case WM_ERASEBKGND.....break et placer le code correspondant
    Je sais comment ça fonctionne merci, j'ai du mal m'exprimer...
    Je voulais juste savoir si on utilisait SetBkColor() dans le message WM_ERASEBKGND, donc à chaque fois que le background de la fenêtre est redessiné par Windows ?

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Non, je ne crois pas.
    Si tu fais un case WM_ERASEBACKGND, le mieux est de faire un FillRect() avec un brush de la couleur voulue...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Notez les amis que WM_ERASEBACKGND n'est pas toujour envoyer:
    s'il on fait ::InvalidateWibndow(h_wind,0,false); le msg est omis. je pense que la reponse depend du context (meme WM_PAINT peut ne pas fontionner)
    a+

Discussions similaires

  1. Changement du Background color selon la donnée
    Par simplething13 dans le forum BIRT
    Réponses: 2
    Dernier message: 03/10/2008, 16h38
  2. [Continuum] XmlRpc API, Changement de groupe
    Par dev09 dans le forum Intégration Continue
    Réponses: 2
    Dernier message: 26/12/2007, 15h47
  3. [API] Changement texte dans un controle "Static Text"
    Par juni38 dans le forum Visual C++
    Réponses: 1
    Dernier message: 23/07/2007, 17h37
  4. [JMenu] Changement de Background
    Par philippe13 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/05/2007, 13h18
  5. [DOM] Changement du background grâce a l'objet DOM style
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 19/12/2005, 16h31

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