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 :

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 logiciel est utilisé sur plusieurs PC connectés à une imprimante EPSON Laser.

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.