Bonjour,
Je réalise un logiciel sous Windows XP, avec Visual.Net 7.0, et qui utilise GDI
afin de tracer sur écran et sur imprimante des dessins basiques (tarits ..) ainsi qu'une image (Bitmap), que je redimensionne sur l'imprimante avec la fonction StretchBlt :
Le logiciel est utilisé sur plusieurs PC connectés à une imprimante EPSON Laser.
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 HBITMAP hBmp; BITMAP bmpi; HDC hdcMem; int cr; hBmp = (HBITMAP) LoadImage(NULL, "image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); GetObject(hBmp, sizeof(bmpi), &bmpi); hdcMem = CreateCompatibleDC(NULL); SelectObject(hdcMem, hBmp); cr = StretchBlt(hdc, 100, 100, bmpi.bmWidth * 2, bmpi.bmHeight * 2, hdcMem, 0, 0, bmpi.bmWidth, bmpi.bmHeight, SRCCOPY); if (cr == 0) { printf("Erreur : StretchBlt, code d'erreur : %d\n",GetLastError()); }
Le problème est que la fonction n'effectue aucun tracé du bitmap sur certains PC alors qu'elle le fait très bien sur les autres PC !!
Le code d'erreur retourné dans ce cas par la fonction GetLastError() vaut 87 (ERROR_INVALID_PARAMETER), ce qui n'est pas très clair.
Les PC sont à priori configurés de la même manière, avec les même drivers.
Remarque : la fonction BitBlt fonctionne sur tous les PC mais ne permet pas de redimensionner les images.
Quelqu'un a-t-il connu ce problème ?
Je vous remercie d'avance pour vos réponses.
Partager