Bonjour,
Afin d'afficher une bannière par dessus ma barre de titre, j'utilise GDI et notamment la fonction StretchBlt(). Après quelques heures de tests, je me rends compte que cette fonction ne me redimensionne rien du tout .
Une petite recherche sur le forum me permet d'invoquer la fonction
et là je constate que la valeur de retour est 0 , donc non supporté à priori.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int ret = GetDeviceCaps(dc, RC_STRETCHBLT); // dc est un CWindowDC
mes questions:
- Comment activer le support de cette fonction sur mon pc? dx9.0c est installé (p'têt rien à avoir?) et la carte graphique est une intégrée (Intel Q965 express).
- S'il n'y a réellement pas moyen d'activer cette fonction, existe t il une méthode (de préférence tout aussi "simple") qui fonctionnerait sur tous les pc?
Voici à titre indicatif le code utilisé:
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 CWindowDC dc(this); CRect rc; GetWindowRect(rc); // Size of menu bar (non-client area) is smaller rc.bottom = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYFRAME); CBitmap Bitmap; CDC MemDC; Bitmap.LoadBitmap(IDB_BITMAP4); BITMAP InfosBmp; Bitmap.GetBitmap(&InfosBmp); MemDC.CreateCompatibleDC(&dc); MemDC.SelectObject(&Bitmap); en memoire /*dc.BitBlt( 0, -15, InfosBmp.bmWidth, InfosBmp.bmHeight, &MemDC, 0,0, SRCCOPY);*/ CSize Size(InfosBmp.bmWidth, InfosBmp.bmHeight); dc.DPtoLP(&Size); dc.SetStretchBltMode( HALFTONE); int hihihi = GetDeviceCaps(dc, RC_STRETCHBLT); dc.StretchBlt( 0, -15, Size.cx,Size.cy, &MemDC, 0, 0, Size.cx,Size.cy,//InfosBmp.bmWidth, InfosBmp.bmHeight, SRCCOPY);
Merci pour votre aide.
Francois
Partager