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 :

initialisation multiple de CPaintDC


Sujet :

MFC

  1. #21
    mat.M
    Invité(e)
    Par défaut
    Oui ok d'accord c'est une méthode.
    Mais tu peux utiliser la méthode TRACE il me semble.

  2. #22
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Ben trace tu peux sortir une valeur de variable tu peux accede au contenu du DC en Hexa mais bon c'est plus facile de l'avoir visuellement...
    Cela dis je sais pas si tout ça interesse vincebel....

  3. #23
    mat.M
    Invité(e)
    Par défaut
    Oui c'est vrai que l'intéressé ne se manifeste pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AfxMessageBox("Bonne Année Everybody");

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    ayé je me montre, désolé mais j'avais des partiels en début de semaines donc révisions champagne, révisions décuvage.....

    Enfin je suis de retour pour tester tout ce que vous me dites!!

  5. #25
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut ,
    et bien commence a relire l'enfilade a partir de ce post :
    http://www.developpez.net/forums/vie...560353#1560353

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    C'est fait!! j'ai bien lu, rlu, ingurgité!!!

    Et voilà où j'en suis:

    1- le dernier code que tu m'as filé n'affiche rien, le StrectchBlt termine bien par un 1, mais rien a l'écran, mon bouton a toujours sont texte MyButton.

    2- j'ai pas trop envie d'utiliser une nouvelle classe pour les boutons mais pourquoi pas.

    3- le messageBox ou Trace ne me sert à rien puisque même en affichant qu'une seule image, elle s'affiche toujours dans le dernier controle, quelque soit le i de monBouton[i]

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    Depuis le début le GW_HWNDLAST me dérange. J'ai essayer de le remplacer par GW-HWNDNEXT ou GW_HWNDNEXT, je change de controle pour l'affichage. Je ne trouve pas comment recupérér le handle sur mon bon controle.

    Une idée?

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    J'ai essayer quelque chose avec ta classe CBtPicture, mais je n'arrive plus a l'inclure a mon projet.
    Alors ma question est : faut-il copier tout le contenu (déclaration et implématation du constructeur et de DrawItem) dans un seul fichier *.h ou faire un *;h et un *.cpp? dans les deux cas j'ai des erreurs.

    EDIT : C'est con, je me suis déjà servi de ta classe, et ça marchait, mais j'y arrive plus snif

  9. #29
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par vincebel
    C'est fait!! j'ai bien lu, rlu, ingurgité!!!

    Et voilà où j'en suis:

    1- le dernier code que tu m'as filé n'affiche rien, le StrectchBlt termine bien par un 1, mais rien a l'écran, mon bouton a toujours sont texte MyButton.

    2- j'ai pas trop envie d'utiliser une nouvelle classe pour les boutons mais pourquoi pas.

    3- le messageBox ou Trace ne me sert à rien puisque même en affichant qu'une seule image, elle s'affiche toujours dans le dernier controle, quelque soit le i de monBouton[i]
    tu remis les coordonnées a zero dans le strectch ?
    essaie de recouvrir la fenetre par autre chose pour voir si le paint ne fais pas apparaitre le bitmap.

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    Bien joué!!! Le problème venait du raffrachissement de la fenetre. J'ai rajouter un invalidate(FALSE) dans la fonction OnPaint et Hop ça marche

    J'ai par là suite rajouter ma boucle pour afficher sur tout mes boutons (ici 2 pour commencer)

    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
    for(i=0;i<2;i++)
    	{
        CDC *pBtDC = m_MyButton[i].GetWindowDC(); 
    	m_MyButton[i].GetClientRect(&rect);
        HBITMAP hbt=(HBITMAP)LoadImage(NULL, "c:\\mer.bmp",IMAGE_BITMAP,0,0, LR_DEFAULTSIZE|LR_LOADFROMFILE); 
        Bitmap.Detach();
    	Bitmap.Attach(hbt); // lecture bitmap dans les ressources 
        BITMAP InfosBmp;    // structure d'informations. 
        Bitmap.GetBitmap(&InfosBmp); 
        MemDC.DeleteDC();
    	MemDC.CreateCompatibleDC(pBtDC);// creation d'un DC en memoire 
        MemDC.SelectObject(&Bitmap); // selection du bitmap dans le DC en memoire 
     
        BOOL oooo=pBtDC->StretchBlt( 0, 0, 
                         rect.Width(),rect.Height(), 
                         &MemDC, 
                         0, 0, 
                         InfosBmp.bmWidth, InfosBmp.bmHeight, 
                         SRCCOPY); 
        m_MyButton[i].ReleaseDC(pBtDC); 
    	}
    	Invalidate(FALSE);
    Est-ce que ça te parait propre? (je sais tu préférerais CBtPicture, mais là j'ai plus trop le temps )

  11. #31
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    pour eviter de prendre trop de temps sur le paint il faudrait que les bitmaps soient chargés avant .
    dans le paint on ne doit faire que l'affichage.
    voili

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    Comme je les affiche dans une boite de dialogue, je peux les charger dans la fonction OnInitialUpdate. Je peux déclarer un tableau dynamique de CDC ou je stockerai les MemDC, et les afficher dans le OnPaint?

    Je pense que c'est faisable, mais ça va devenir lourd en tableau dynamique

    A propos de tableau dynamique, j'ai une question:
    Comme je ne sais pas au préalable combien j'ai d'image à afficher (je connais juste la maxi : 6), et comme j'affiche mes images dans des CStatic ( ou CButton, c pareil), je dois déclarer dynamiquement le tableau. Voilà ce que je voulais faire :

    dans le *.h :
    et dans le constructeur de la boite dialogue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_MyButton = new CStatic(2);
    Le problème, c'est que le constructeur de CStatic ou de CButton, ne prend pas mon paramètre 2.
    Une solution?

  13. #33
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re,
    utilise un CArray .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // dans le .h 
    CArray<CStatic * ,CStatic *> m_apStatics;
     
    CStatic *pMyButton= new CStatic ;
    m_apStatics.Add(pMyButton);
    // etc...
    apres ça s'utilise comme un tableau de pointeur de CStatic .
    voir MSDN pour les autres fonctions de la classe.
    il faut mettre #include <afxtempl.h> dans stdafx.h

  14. #34
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    ok ok, je vais voir ça, mais pas aujourd'hui, j'ai un rapporta rendre avant de me plonger dans les CArray, je vais d'abord déclarer en statique.

    Sinon pour la manière de charger les images et de les afficher, un tableau de CDC en variable membre te parait bon?

  15. #35
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    Finalement non, c pas une bonne idée, il me manqueras d'autres paramètres pour la fonction stretchBlt.
    j'essaierai ce soir.

    En tout cas, merci, merci, et encore merci.

  16. #36
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 20
    Par défaut
    Bon, étant donné que j'arrive a affichier le nombre d'iamge que je veux, je considère mon problème comme résolu. Je creuserait le CArray et le chargement de l'image en amont du OnPaint plus tard, et je reviendrait te poser des questions

    en tout cas merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/12/2014, 15h19
  2. [1.x] Initialisation GMap multiple
    Par pixworld dans le forum Symfony
    Réponses: 2
    Dernier message: 12/12/2011, 17h19
  3. Réponses: 4
    Dernier message: 28/07/2009, 21h01
  4. [AJAX] Initialisation de liste multiple
    Par Alex70 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 25/03/2008, 16h38
  5. Initialisation ListBox à sélections multiples
    Par vincentdu33 dans le forum C#
    Réponses: 1
    Dernier message: 26/07/2007, 09h54

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