Alkor2001 | Yoyo@ a écrit :
Mais nan, Je voudrais pouvoir le faire de maniere logicielle, cad inclure un bouton dans ma toolbar permettant de saugarder ma vue en format bmp (et avec le nom de fichier voulu)
|
Bah justement y a moyen de sauvegarder en tant que BMP ce qui est affiché à l'écran...
Voilà un exemple que j'ai fait, ça doit être très loin d'être propre point de vue code, mais ça fonctionne bien:
Code :
- char fichierbmp[64],fichiergif[64];
- char command[128];
- CClientDC dc(this);
- LPRECT lprect;
- RECT rect;
- CPoint pt;
- pt=dc.GetCurrentPosition();
- GetWindowRect(&rect);
- lprect=▭
- HDC hdcScreen=CreateDC("DISPLAY",NULL,NULL,NULL);
- HDC hdcCompatible=CreateCompatibleDC(hdcScreen);
- BITMAP bmp;
- bmp.bmPlanes=1;
- bmp.bmBitsPixel=8;
- // suppression des artéfacts éventuels
- // (on connaît windows!!)
- lprect->left+=5;
- if(version == 0) //Win 9x/Me
- {
- //MessageBox("9x/Me","" );
- lprect->top += 40; //On ne capture pas l'entête des courbes (angle + valeurs des capteurs)
- }
- else if(version == 1) //Win 2000/Xp
- {
- //MessageBox("2k/XP","" );
- lprect->top += 48; //On ne capture pas l'entête des courbes (angle + valeurs des capteurs)
- }
- else if(version == -1) //Erreur dans la détermination de la version
- {
- //MessageBox("???","" );
- lprect->top += 40;
- }
- lprect->right-=5;
- lprect->bottom-=5;
- bmp.bmWidth=(lprect->right)-(lprect->left);
- bmp.bmHeight=(lprect->bottom)-(lprect->top);
- HBITMAP hbmScreen=CreateCompatibleBitmap(hdcScreen,
- bmp.bmWidth,
- bmp.bmHeight);
- if(hbmScreen==0)
- MessageBox("Erreur 1","Erreur",MB_ICONSTOP);
- if(!SelectObject(hdcCompatible,hbmScreen))
- MessageBox("Erreur 2","Erreur",MB_ICONSTOP);
- if(!BitBlt(hdcCompatible,
- 0,0,
- bmp.bmWidth,bmp.bmHeight,hdcScreen,
- lprect->left,lprect->top,
- SRCCOPY))
- MessageBox("Erreur 3","Erreur",MB_ICONSTOP);
- PBITMAPINFO info;
- info=CreateBitmapInfoStruct(hbmScreen);
- if(info!=NULL)
- {
- sprintf(fichierbmp,"c%02dt%02d.bmp",axe,courbe_courante);
- sprintf(fichiergif,"c%02dt%02d.gif",axe,courbe_courante);
- CreateBMPFile(fichierbmp,info,hbmScreen,hdcCompatible);
- // si test.gif existe, l'effacer!
- if(fichier_existe(fichiergif))
- DeleteFile(fichiergif);
- // convertit
- sprintf(command,"..\\..\\..\\..\\..\\GiFFY /a %s",fichierbmp);
- WinExec(command,SW_HIDE);
- // la conversion s'est-elle (à priori) bien déroulée?
- if(!fichier_existe(fichiergif))
- {
- MessageBox("Erreur lors de la conversion","Erreur",MB_ICONSTOP);
- }
- else
- {
- DeleteFile(fichierbmp);
- //MessageBox("Courbe validée pour exportation!","Information",MB_ICONINFORMATION);
- }
- }
- else
- {
- MessageBox("La courbe n'a pas pu être exportée!","Erreur",MB_ICONEXCLAMATION);
- }
- DeleteDC(hdcScreen);
|
---------------
J'aime pas Apple...
|