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] Progress Bar dans un CButton


Sujet :

MFC

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Points : 65
    Points
    65
    Par défaut [MFC] Progress Bar dans un CButton
    Salut,
    j'aimerai afficher un controle de type CProgressCtrl dans un CButton.
    voici le code que j'ai écrit pour ce faire :

    dans le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CProgressCtrl* m_progressBar;
    dans le .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CRect rectButtonPos;
    GetDlgItem(IDC_RUN)->GetWindowRect(&rectButtonPos);
    m_progressBar->Create(PBS_SMOOTH, rectButtonPos, (CWnd*)GetDlgItem(IDC_RUN), 138);
    m_progressBar->SetStep(1);
    m_progressBar->SetRange((int)0, m_nMesureNbMax);
    m_progressBar->SetPos(0);
    m_progressBar->ShowWindow(SW_SHOWNORMAL);
    Le problème est que je ne vois pas la progress bar dans le bouton. Si je change le 3ème paramètre de la méthode Create par un CDialog, je vois bien la progress bar. Y a t'il une action à effectuer sur le CButton ?
    merci.

  2. #2
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    specifier que le bouton est owner draw ...
    les coordonnées sont exprimées par rapport au parent .
    ici c'est le bouton alors tes coordonnées doivent commencer en 0,0
    toi tu donnes celles par rapport à l'ecran:
    il vaudrait mieux faire GetClientRect.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Points : 65
    Points
    65
    Par défaut
    En cochant la propriété owner draw, forcément ça ne compile plus. j'ai lancé une recherche sur dvp.net pour savoir ce que je devais faire et je n'ai trouvé que : http://c.developpez.com/faq/vc/?page=Colorisations
    Sachant que ça ne me convenait pas, j'ai tenté de dessiner le bouton "a la main" :
    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
    	CPaintDC dc(this); // device context for painting
    	RECT rectButtonPos;
    	GetDlgItem(IDC_RUN)->GetClientRect(&rectButtonPos);
    	DRAWITEMSTRUCT btDraw={
    		ODT_BUTTON, 
    		IDC_RUN, 
    		IDC_RUN, 
    		ODA_DRAWENTIRE, 
    		ODS_FOCUS, 
    		(HWND)this, 
    		dc, 
    		rectButtonPos,  //ERREUR ICI
    		0
    	};
    	static_cast<CButton*>(GetDlgItem(IDC_RUN))->DrawItem(&btDraw);
    et je tombe sur une erreur de compilation
    error C2440: 'initializing' : cannot convert from 'struct tagRECT' to 'long'
    Donc 2 choses :
    * est ce la bonne voie que je suis ?
    * si oui, quelle est l'erreur ???

  4. #4
    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
    A Vrai dire je ne vois pas le pourquoi tu owner draw.
    A mon avis la solution tiend sur 2 points:
    1 - Les coordonnees doivent etre en client par rapport au button (x = 0, y = 0)
    2- Le button doit avopir le style WS_CLIPCHILDERN.
    a+

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Points : 65
    Points
    65
    Par défaut
    j'ai trouvé plus simple : je dessine la progress bar depuis l'éditeur sur le bouton (avec attribut transparent) au lieu de la créer dynamiquement. Je n'arrivais pas à l'afficher en création dynamique.
    merci pour vos solutions.

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

Discussions similaires

  1. Progress Bar dans Access
    Par shr3dpit dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/11/2007, 05h52
  2. Contrôler progress bar dans IE
    Par gverca dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/01/2007, 12h50
  3. [MFC] progress bar
    Par tyarcaouen dans le forum MFC
    Réponses: 2
    Dernier message: 14/04/2006, 12h40
  4. [MFC] Progress Bar - comment on fait?
    Par Rafoo dans le forum MFC
    Réponses: 13
    Dernier message: 13/04/2006, 16h52
  5. progress bar dans une status bar ?
    Par raggadoll dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/11/2005, 15h17

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