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] OnPaint OnDraw CView


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par d�faut [MFC] OnPaint OnDraw CView
    Bonjour,

    J'ai une application derive d'une CView dans laquelle je cree 3 CStatic dans la fonction OnInitialUpdate( Les CStatics en question sont declar�s en tant que membre de la classe : CStatic* pLabel1, ...).

    Ils s'affichent correctement � l'ecran par contre quand je fais un apercu avant impression y'a rien.Apres quelques recherches cela vient du fait que pour que ca se voit il faudrait remplir la fonction OnDraw.


    Comment faire pour que l'aper�u avant impression fonctionne avec mes trois labels ?

  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
    Par d�faut
    salut,
    tu viens de donner la reponse :
    l'affichage dans une view doit se faire dans OnDraw .
    voir ce post dans la faq:
    http://c.developpez.com/faq/vc/?page...HowToPrintView

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par d�faut
    Citation Envoy� par farscape
    salut,
    tu viens de donner la reponse :
    l'affichage dans une view doit se faire dans OnDraw .
    voir ce post dans la faq:
    http://c.developpez.com/faq/vc/?page...HowToPrintView
    Oui mais comment je fais ?
    Si je declare une CStatic dans mon OnDraw il va le redeclarer a chaque appel de OnDraw.

    En clair :

    J'ai ca

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CPersoGraphiqueView::OnDraw(CDC* pDC)
    {
    	CPersoGraphiqueDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
     
     
    }

    cette fonction s'attend a ce que je dessine des trucs alors que moi mon Cstatic il se dessine tout seul. Comment je passe � au DC du OwnDraw le DC de mon CStatic ?
    Dois je utiliser des controles owner-drawn ?

  4. #4
    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
    pour ce genre de travail :
    les controles sont initialis�es dans OninitialUpdate.
    probleme lors de l'impression tu n'auras rien ,puisque le dessin dans une view se fait dans OnDraw et que le controle est independant.
    il faut donc dessiner le controle comme �a se fait dans un grid :
    en mode edition sur un combobox (par exemple) le controle est instanci�
    apres il est dessin� .
    il serait dont judicieux de faire une petite classe de dessin pour static etc..
    une fonction est utile pour les controles CDC:rawFrameControl
    mais pas pour les statics...


  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par d�faut
    Citation Envoy� par farscape
    pour ce genre de travail :
    les controles sont initialis�es dans OninitialUpdate.
    probleme lors de l'impression tu n'auras rien ,puisque le dessin dans une view se fait dans OnDraw et que le controle est independant.
    il faut donc dessiner le controle comme �a se fait dans un grid :
    en mode edition sur un combobox (par exemple) le controle est instanci�
    apres il est dessin� .
    il serait dont judicieux de faire une petite classe de dessin pour static etc..
    une fonction est utile pour les controles CDC:rawFrameControl
    mais pas pour les statics...


    Tu(pardon de te tutoyer) veux dire que je dois m'amuser � redessiner tous mes controles ?
    Je suis pas sur de comprendre, c'est quoi le mode edition, c'est quoi un grid et pourquoi 42 ?

  6. #6
    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,
    la reponse est oui ,et si tu nous disais ce que tu cherches a faire ?

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par d�faut
    Citation Envoy� par farscape
    re,
    la reponse est oui ,et si tu nous disais ce que tu cherches a faire ?
    Va a l'adresse indiqu�e ci-dessous et telecharges l'executable (c'est pas un virus)
    en gros j'ai reimplement� un editeur de controles.
    Je definis dynamiquement mes controles et leurs proprietes et je sauvegarde ensuite dans un fichier XML.
    Mon objectif etait de pouvoir imprimer le design courant.

    C'est pas tres clair donc essaye mon appli et tu vascomprendre tout de suite :

    http://richom.v.free.fr/PersoGraphique.exe

    Ensuite va dans Affichage->Screen Designer et la si tu cliques
    sur le fond une toolbar va apparaitre.
    Ensuite ajoute un label(icone Aa), la toolbar fonctionne en Drag N drop, tu cliques sur l'icone et tu la deplaces a l'interieur de la fenetre.

    PS : pour voir la mise a jour des propri�tes tu dois deselectionner le controle en cours et recliquer dessus.
    J'ai aussi un bug appermment pour le chargement d'images.
    Ca marchait ce matin mais la il faut reessayer plusieurs fois pour que ca fonctionne.



    Ensuite une fois fini tu retournes dans Affichage->Screen Designer et ca te cree un joli fichier XML avec une description des objets et leurs propri�tes.
    En gros j'ai reimpl�ment� en MFC certaines fonctionnalit�s de wxwidgets (possibilit� de definir les ressources dans un fichier XML).
    Meme au niveau du code ca simplifie la vie, en gros si mon objet s'appelle ID_STATIC_1002 je peux faire par exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    void CTestView::OnInitialUpdate() 
    {
    CXuiWnd<CView>::OnInitialUpdate();
    CxStatic* pLabel = XUICTRL(*this, "ID_STATIC_1002", CxStatic);
    pLabel->SetWindowText("....");
    }
    Mais bon je m'�loigne de mon probl�me donc en fait ce n'est pas possible d'imprimer le design ?
    C'est ton dernier mot ?
    Je pense que ca doit etre possible en trichant.
    En gros si je fais une sorte de capture ecran et que j'envoie ca � l'imprimante, ca peut le faire non ?

  8. #8
    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
    oui c'est possible a condition que toute ta surface soit visible a l'ecran .
    a ce moment la voir faq:
    http://c.developpez.com/faq/vc/?page...PrintDialgoBox

    en adaptant a la view �a fonctionne.


  9. #9
    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
    j'en conclus que tu as imprim� la view a partir d'un bitmap ?,
    tu t'en tire bien

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 11/11/2005, 18h30
  2. [MFC] Glisser/D�poser dans une CView
    Par octopus984 dans le forum MFC
    R�ponses: 2
    Dernier message: 26/04/2005, 10h15
  3. R�ponses: 5
    Dernier message: 25/03/2005, 16h19
  4. [MFC] diff�rence entre CView et CDialog?
    Par r0d dans le forum MFC
    R�ponses: 3
    Dernier message: 22/02/2005, 16h23
  5. R�ponses: 13
    Dernier message: 02/02/2005, 00h21

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