Dessiner dans le CView à partir du CDoc

Résolu
VdkBULL Messages postés 3 Date d'inscription jeudi 25 septembre 2008 Statut Membre Dernière intervention 9 novembre 2008 - 6 nov. 2008 à 17:39
VdkBULL Messages postés 3 Date d'inscription jeudi 25 septembre 2008 Statut Membre Dernière intervention 9 novembre 2008 - 9 nov. 2008 à 18:47
Bonjour,

Je suis entrain de réaliser un petit jeu qui dessine des carrés sous vc++.
Dans mon fichier CDocument je voudrais pouvoir y appeler des fonctions qui dessine.
J'ai donc besoins du rc et pDC de ma view, et je n'y arrive pas.
Voilà ce que j'ai :

CMyDoc::CMyDoc()
{
    Dessine()
}

void CMyDoc::Dessine()
{
    CDC *pDC = new CDC;
    CRect rc;
    GetClientRect(GetDesktopWindow(),&rc);
    pDC->Rectangle(10,20,10,20);
}

Et ça me fait une méchante erreur je me doute que les lignes :
    CDC *pDC = new CDC;

    CRect rc;

    GetClientRect(GetDesktopWindow(),&rc);
ne sont pas celles attendues.

Merci de me filer un coup de main !

2 réponses

cs_Scooper Messages postés 71 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 12 septembre 2013
9 nov. 2008 à 18:24
il faut que tu initialise ton DC avec le HWND de ta fenetre principale, en l'occurance ton View :
(en MFC je ens ais pas mais en win32)
HDC hDc = GetDC(m_hWnd);

Ensuite je pense que tu dois dessiner ton interface dans la methode OnPaint de ton View et non pas a la construction de ton Doc, et le mieux (si je ne me trompe pas) est d'abord de dessiner dans un DC en mémoire et après de faire un bitblt de ton image en mémoire vers l'affichage (beaucoup plus rapide que de dessiner directement dans le DC affiché).
3
VdkBULL Messages postés 3 Date d'inscription jeudi 25 septembre 2008 Statut Membre Dernière intervention 9 novembre 2008
9 nov. 2008 à 18:47
Merci de ta réponse, je vais regarder ça !
0
Rejoignez-nous