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..
Savez vous o� je me trompe?
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(); }
- 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
Partager