Bonjour,

je fais quelques tests afin de pouvoir dessiner dans ma fen�tre.
L'utilisation de la classe CWindowDC � la place de CDC devrait logiquement, si j'ai bien compris, me permettre d'aller dessiner au dessus des menubar et tool bar?
(car ce qui est retourn� par cWindowDC est l'enti�ret� de l'espace occup� par CWnd - que je lui passe en param�tre - contrairement � CDC qui ne va me retourner que l'espace occup� par le client)

Cependant, quand je remonte � l'origine (0,0), je vois mon dessin passer en dessous de ces menubar, toolbar .

Voici une partie du code ( projet mfc/sdi):
note: le bitmap ne s'affiche pas correctement (carr� noir) mais c'est un probl�me secondaire..
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
 
 
void CtestgdiView::OnDraw(CDC* pDC)
{
	CtestgdiDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
 
	// taille zone cliente
	CRect rcClient;
	GetWindowRect(&rcClient);
 
	CWindowDC memDC(this);
	memDC.CreateCompatibleDC(pDC);
	CBitmap memBmp;
	memBmp.LoadBitmap(IDB_BITMAP2);
	BITMAP InfosBmp;					
        memBmp.GetBitmap(&InfosBmp);
	memBmp.CreateCompatibleBitmap(pDC, rcClient.Width(), rcClient.Height());
	CBitmap* pOldBmp = memDC.SelectObject(&memBmp);
 
	CSize Size(InfosBmp.bmWidth , InfosBmp.bmHeight );
        pDC->DPtoLP(&Size);
        pDC->StretchBlt( 0, 0,
                     Size.cx,-Size.cy,
                     &memDC,
                     0,0,
                     InfosBmp.bmWidth, InfosBmp.bmHeight,
                     SRCCOPY); 
 
	// destruction contexte d'affichage
	memDC.SelectObject(pOldBmp);
	memDC.DeleteDC();
	memBmp.DeleteObject();
}
Savez vous o� je me trompe?
- ma compr�hension de la classe CWindowDC est elle bonne? peut on r�ellement allez dessiner au dessus des menu/tool bars?
- si oui, qu'est ce qui se passe mal? j'ai un peu de mal � utiliser le gdi, la notion de device context & Co est nouvelle et encore assez vague pour moi..

Merci pour votre aide.

Francois