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 :

Rafraîchissement de la zone client


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Rafraîchissement de la zone client
    Bonjour tout le monde, je suis en train de coder une petite application graphique à l'aide de l'API win32. Mon application doit afficher au début une image (au démarrage), nsuite quand l'utilisateur clique sur un bouton, elle doit afficher une autre image, en effacant la precedente.
    Le problème se trouve dans l'affichage de l'image: j'arrive pas à afficher la deuxième image. Enfin, si je bouge la fenêtre, pour qu'elle se redessine, tout va bien ,mais ça ne le fait pas automatiquement.
    Voilà un petit bout de code:

    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
    case WM_PAINT:
    		if(connected==1)
    		{
    			hBmp=LoadBitmap(instance,"LOGO");
    			hdc = BeginPaint(fenetrePrincipale, &ps);
    			DrawState(hdc,NULL,NULL,(long)hBmp,NULL,22,-30,0,0,DST_BITMAP);
    			EndPaint(fenetrePrincipale, &ps);
    			DeleteObject(hBmp);
    		}
    		else if(connected==0)
    		{
    			hBmp=LoadBitmap(instance,"LOGOCON");
    			hdc = BeginPaint(fenetrePrincipale, &ps);
    			DrawState(hdc,NULL,NULL,(long)hBmp,NULL,22,130,0,0,DST_BITMAP);
    			EndPaint(fenetrePrincipale, &ps);
    			DeleteObject(hBmp);
    		}
    		return 0;
    Comme vous voyez j'ai utilisé un evennement paint. La variable connected indique si l'utilisateur a ou n'a pas pressé sur le bouton qui change l'image. Elle a été initialisée à 0. Au début elle affiche donc l'image "LOGOCON" (Logo Connection)

    Merci de votre aide!!!

  2. #2
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Le message WM_PAINT est envoyé lorsqu'il faut redessiner la fenetre.

    Donc quand tu redimmensionne, un message WM_PAINT est envoyé, vu qu'il faut redessiner.

    Par contre, quand tu clique sur un bouton, la fenetre n'est pas au courant qu'elle doit se redessiner...

    Il suffit donc, au moment du clic, de lui envoyer un message WM_PAINT.

    Le plus simple est d'utiliser :

    InvalidateRect(hwnd,NULL,true);

    (cet appel demandera de redessiner l'integralité de la fenetre)

    Toute la doc ici :

    http://msdn.microsoft.com/library/de...tdraw_7ano.asp

Discussions similaires

  1. calcul du déplacement de la zone client : Scrollbar
    Par kanea_iza dans le forum Windows
    Réponses: 1
    Dernier message: 16/05/2007, 15h57
  2. Zone client différente entre BCB 6 et BDS2006
    Par kurul1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/05/2007, 08h49
  3. Taille d'une JFrame par rapport à sa zone client?
    Par Médinoc dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 04/11/2006, 22h13
  4. Affichage d'un bitmap dans la zone client
    Par BigMike dans le forum MFC
    Réponses: 3
    Dernier message: 03/11/2006, 00h34
  5. Créer une zone client spéciale (genre tableur)
    Par Spartan03 dans le forum Windows
    Réponses: 8
    Dernier message: 02/11/2005, 10h25

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