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 :

[MFC] Question de débutant...


Sujet :

MFC

  1. #1
    Membre actif
    Avatar de Fildz
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 272
    Points
    272
    Par défaut [MFC] Question de débutant...
    Bonjours (et Bonne Année) a tous !
    Voila j'ai divers questions a vous poser concernant les MFC, dans une application SDI :

    - J'aimerai tout d'abord savoir comment on récupere la taille d'une vue (View), j'ai essayer d'utiliser la méthode GetWindowRect() et GetClientRect() qui prenne un CRect ou un LPRECT en argument mais sans succes (ca fait planté le programme...)

    - Ensuite, j'aimerai savoir comment on change le curseur de la souris (la question avait été posé et résolu sur ce forum mais le post n'exite plus )

    - Enfin, j'aimerai savoir comment effacer une image d'une vue. Actuellement toutes les images présente dans la vue sont stoker dans une liste, et pour en effacer une je la supprime de la liste et je réaffiche tout. Le probleme c'est que ca fait ramé (en fait, ca clignote de partout) quand je déplace une image (a chaque déplacement j'efface tout et je réaffiche...). Existe t-il une méthode plus propre, et plus simple pour effacer une image ?

    Voila, c'est fini. J'espere que vous pourrez répondre a mes questions.

    @+

  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 Re: [MFC] Question de débutant...
    Citation Envoyé par Fildz
    Bonjours (et Bonne Année) a tous !
    Voila j'ai divers questions a vous poser concernant les MFC, dans une application SDI :

    - J'aimerai tout d'abord savoir comment on récupere la taille d'une vue (View), j'ai essayer d'utiliser la méthode GetWindowRect() et GetClientRect() qui prenne un CRect ou un LPRECT en argument mais sans succes (ca fait planté le programme...)
    C'est la bonne méthode, montre le code qui plante

    Citation Envoyé par Fildz
    - Ensuite, j'aimerai savoir comment on change le curseur de la souris (la question avait été posé et résolu sur ce forum mais le post n'exite plus )
    Voir SetCursor par exemple dans MSDN

    Citation Envoyé par Fildz
    - Enfin, j'aimerai savoir comment effacer une image d'une vue. Actuellement toutes les images présente dans la vue sont stoker dans une liste, et pour en effacer une je la supprime de la liste et je réaffiche tout. Le probleme c'est que ca fait ramé (en fait, ca clignote de partout) quand je déplace une image (a chaque déplacement j'efface tout et je réaffiche...). Existe t-il une méthode plus propre, et plus simple pour effacer une image ?
    En général, on utilise le double buffering, une recherche sur ces mots clés devrait te donner des pistes

  3. #3
    Membre actif
    Avatar de Fildz
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 272
    Points
    272
    Par défaut
    Merci nico-pyright(c),

    - Pour GetClientRect() je viens de refaire le test pour te montré le code et ca a marché en fait lol

    - En effet SetCursor() permet de modifier le curseur de la souris je devrais arriver a me débrouillé maintenant

    - Je me suis renseigné sur le Double buffering.

    Voila ce que j'ai fait, et ca a multiplier le clignotement par 2 lol :



    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
     
    void CCreaView::OnDraw(CDC* pDC)
    {
     
     
    //** taille zone cliente **/
     
    CRect rcClient;
    GetClientRect(rcClient);
     
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    CBitmap memBmp;
    memBmp.CreateCompatibleBitmap(pDC, rcClient.Width(), rcClient.Height());
    CBitmap* pOldBmp = memDC.SelectObject(&memBmp);
     
    //**  effacement du fond **/
     
    CBrush backBrush;
    backBrush.CreateSolidBrush(RGB(255, 255, 255));
    memDC.FillRect(rcClient, &backBrush);
    backBrush.DeleteObject();
     
    //** ici tu dessine dans memDC comme tu l'aurai fait dans pDC
    --> donc j'ai mit ce qu'il y avait avant dans ma méthode OnDraw
    en remplacant "pDC->" par "memDC."
    **/
     
          // Récupération d'un pointeur sur doc
    	CCrea2K6Doc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
     
    	// Pour limiter le format
    	CPoint p1 = CPoint(100,100);
    	CPoint p2 = p1+pDoc->m_Format;
    	memDC.IntersectClipRect(CRect(p1,p2));
    	memDC.Rectangle(CRect(p1,p2));
     
    	POSITION aPos=pDoc->GetListHeadPosition();		//position du premier element de la liste
    	CEntite* pEntite=NULL;
    	while(aPos)								//boucle sur tous les éléments
    	{
    		pEntite=pDoc->GetNext(aPos);
    		if(memDC.RectVisible(pEntite->GetBoundRect())) //vérifie si Rect est entierement dans la vue
    			pEntite->Draw(&memDC,m_pSelected);
    	}
     
     
    //** recopie du contexte en mémoire **/
    pDC->BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &memDC, 0, 0, SRCCOPY);
     
    //** destruction contexte d'affichage **/
    memDC.SelectObject(pOldBmp);
    memDC.DeleteDC();
    memBmp.DeleteObject();
    /*****************************************************************/
     
     
     
    }

Discussions similaires

  1. Réponses: 15
    Dernier message: 19/01/2005, 00h18
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 11h51
  3. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 18h25
  4. Questions de débutant
    Par J-P-B dans le forum XMLRAD
    Réponses: 12
    Dernier message: 24/07/2003, 16h19
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 30/04/2002, 00h18

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