begin process at 2012 05 27 19:57:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > HWND TO BMP FILE (WIN32)

HWND TO BMP FILE (WIN32)


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :28/07/2003 Date de mise à jour :28/07/2003 19:36:23 Vu / téléchargé :3 810 / 280

Auteur : BruNews

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Variation sur le theme de la precedente source.
Fonction qui prend une photo de fenetre en BMP.
HwndToBmpFile(HWND hwnd, char *pszflname);
Dans l'exemple fourni la fenetre passe son hwnd.
On peut faire la photo d'une autre fenetre mais il faut la passer au 1er plan.
Tout dans le zip.

Source

  • int __stdcall HwndToBmpFile(HWND hwnd, char *pszflname)
  • {
  • HDC memdc, hdc;
  • HANDLE hfl;
  • DWORD dwBytes, dwNumColors;
  • void *pBits;
  • HBITMAP hbmp;
  • BITMAPFILEHEADER fileheader;
  • BITMAPINFOHEADER infoheader;
  • RGBQUAD colors[256];
  • BITMAPINFO bmpinfo;
  • HGDIOBJ hret;
  • RECT rct;
  • hdc = GetWindowDC(hwnd);
  • if(!hdc) return 0;
  • GetWindowRect(hwnd, &rct);
  • rct.bottom -= rct.top;
  • rct.right -= rct.left;
  • rct.top = GetDeviceCaps(hdc, BITSPIXEL);
  • if(rct.top <= 8) dwNumColors = 256;
  • else dwNumColors = 0;
  • if(!(memdc = CreateCompatibleDC(hdc))) goto relHwndDc;
  • bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  • bmpinfo.bmiHeader.biWidth = rct.right;
  • bmpinfo.bmiHeader.biHeight = rct.bottom;
  • bmpinfo.bmiHeader.biPlanes = 1;
  • bmpinfo.bmiHeader.biBitCount = (WORD) rct.top;
  • bmpinfo.bmiHeader.biCompression = BI_RGB;
  • bmpinfo.bmiHeader.biSizeImage = 0;
  • bmpinfo.bmiHeader.biXPelsPerMeter = 0;
  • bmpinfo.bmiHeader.biYPelsPerMeter = 0;
  • bmpinfo.bmiHeader.biClrUsed = dwNumColors;
  • bmpinfo.bmiHeader.biClrImportant = dwNumColors;
  • hbmp = CreateDIBSection(hdc, &bmpinfo, DIB_PAL_COLORS, &pBits, NULL, 0);
  • if(!hbmp) goto errato;
  • hret = SelectObject(memdc, hbmp);
  • if(!hret || (hret == HGDI_ERROR)) goto errato;
  • if(!BitBlt(memdc, 0, 0, rct.right, rct.bottom, hdc, 0, 0, SRCCOPY)) goto errato;
  • if(dwNumColors) dwNumColors = GetDIBColorTable(memdc, 0, dwNumColors, colors);
  • fileheader.bfType = 0x4D42;
  • rct.left = dwNumColors * sizeof(RGBQUAD);
  • fileheader.bfSize = ((rct.right * rct.bottom * rct.top) >> 3) + rct.left + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  • fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
  • fileheader.bfOffBits = rct.left + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  • infoheader.biSize = sizeof(BITMAPINFOHEADER);
  • infoheader.biWidth = rct.right;
  • infoheader.biHeight = rct.bottom;
  • infoheader.biPlanes = 1;
  • infoheader.biBitCount = (WORD) rct.top;
  • infoheader.biCompression = BI_RGB;
  • infoheader.biSizeImage = infoheader.biClrImportant = 0;
  • infoheader.biXPelsPerMeter = infoheader.biYPelsPerMeter = 0;
  • infoheader.biClrUsed = dwNumColors;
  • hfl = CreateFile(pszflname,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  • if(hfl == INVALID_HANDLE_VALUE) {DeleteObject(hbmp); goto errato;}
  • WriteFile(hfl, &fileheader, sizeof(BITMAPFILEHEADER), &dwBytes, 0);
  • WriteFile(hfl, &infoheader, sizeof(BITMAPINFOHEADER), &dwBytes, 0);
  • if(!dwNumColors) WriteFile(hfl, colors, rct.left, &dwBytes, 0);
  • WriteFile(hfl, pBits, (rct.right * rct.bottom * rct.top) >> 3, &dwBytes, 0);
  • CloseHandle(hfl);
  • DeleteObject(hbmp);
  • DeleteDC(memdc);
  • return 1;
  • errato:
  • DeleteDC(memdc);
  • relHwndDc:
  • ReleaseDC(hwnd, hdc); return 0;
  • }
int __stdcall HwndToBmpFile(HWND hwnd, char *pszflname)
{
  HDC memdc, hdc;
  HANDLE hfl;
  DWORD dwBytes, dwNumColors;
  void *pBits;
  HBITMAP hbmp;
  BITMAPFILEHEADER fileheader;
  BITMAPINFOHEADER infoheader;
  RGBQUAD colors[256];
  BITMAPINFO bmpinfo;
  HGDIOBJ hret;
  RECT rct;
  hdc = GetWindowDC(hwnd);
  if(!hdc) return 0;
  GetWindowRect(hwnd, &rct);
  rct.bottom -= rct.top;
  rct.right -= rct.left;
  rct.top = GetDeviceCaps(hdc, BITSPIXEL);
  if(rct.top <= 8) dwNumColors = 256;
  else dwNumColors = 0;
  if(!(memdc = CreateCompatibleDC(hdc))) goto relHwndDc;
  bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  bmpinfo.bmiHeader.biWidth = rct.right;
  bmpinfo.bmiHeader.biHeight = rct.bottom;
  bmpinfo.bmiHeader.biPlanes = 1;
  bmpinfo.bmiHeader.biBitCount = (WORD) rct.top;
  bmpinfo.bmiHeader.biCompression = BI_RGB;
  bmpinfo.bmiHeader.biSizeImage = 0;
  bmpinfo.bmiHeader.biXPelsPerMeter = 0;
  bmpinfo.bmiHeader.biYPelsPerMeter = 0;
  bmpinfo.bmiHeader.biClrUsed = dwNumColors;
  bmpinfo.bmiHeader.biClrImportant = dwNumColors;
  hbmp = CreateDIBSection(hdc, &bmpinfo, DIB_PAL_COLORS, &pBits, NULL, 0);
  if(!hbmp) goto errato;
  hret = SelectObject(memdc, hbmp);
  if(!hret || (hret == HGDI_ERROR)) goto errato;
  if(!BitBlt(memdc, 0, 0, rct.right, rct.bottom, hdc, 0, 0, SRCCOPY)) goto errato;
  if(dwNumColors) dwNumColors = GetDIBColorTable(memdc, 0, dwNumColors, colors);
  fileheader.bfType = 0x4D42;
  rct.left = dwNumColors * sizeof(RGBQUAD);
  fileheader.bfSize = ((rct.right * rct.bottom * rct.top) >> 3) + rct.left + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
  fileheader.bfOffBits = rct.left + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  infoheader.biSize = sizeof(BITMAPINFOHEADER);
  infoheader.biWidth = rct.right;
  infoheader.biHeight = rct.bottom;
  infoheader.biPlanes = 1;
  infoheader.biBitCount = (WORD) rct.top;
  infoheader.biCompression = BI_RGB;
  infoheader.biSizeImage = infoheader.biClrImportant = 0;
  infoheader.biXPelsPerMeter = infoheader.biYPelsPerMeter = 0;
  infoheader.biClrUsed = dwNumColors;
  hfl = CreateFile(pszflname,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  if(hfl == INVALID_HANDLE_VALUE) {DeleteObject(hbmp); goto errato;}
  WriteFile(hfl, &fileheader, sizeof(BITMAPFILEHEADER), &dwBytes, 0);
  WriteFile(hfl, &infoheader, sizeof(BITMAPINFOHEADER), &dwBytes, 0);
  if(!dwNumColors) WriteFile(hfl, colors, rct.left, &dwBytes, 0);
  WriteFile(hfl, pBits, (rct.right * rct.bottom * rct.top) >> 3, &dwBytes, 0);
  CloseHandle(hfl);
  DeleteObject(hbmp);
  DeleteDC(memdc);
  return 1;
errato:
  DeleteDC(memdc);
relHwndDc:
  ReleaseDC(hwnd, hdc); return 0;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   release
    • TestDc.exeTélécharger ce fichier [Réservé aux membres club]24 064 octets
  • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier541 octets
  • TestDc.apsTélécharger ce fichier [Réservé aux membres club]33 492 octets
  • TestDc.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 456 octets
  • TestDc.ncbTélécharger ce fichier [Réservé aux membres club]27 648 octets
  • TestDc.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 277 octets
  • TestDc.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier901 octets
  • TestDc.suoTélécharger ce fichier [Réservé aux membres club]8 192 octets
  • TestDc.vcprojTélécharger ce fichier [Réservé aux membres club]3 692 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64)
Source avec Zip Source avec une capture FIND TEXT (WIN64)
Source avec Zip DELETE DIRECTORY (WIN64)
Source avec Zip ENUM DIRECTORY (WIN64)
Source avec Zip TEMPLATES C/C++ POUR VS 2010

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de BlackWizzard le 28/07/2003 20:44:34 administrateur CS

vraiment genial :)

Commentaire de JCDjcd le 28/07/2003 20:48:12

Elle fait quoi ta source ?

Commentaire de BlackWizzard le 28/07/2003 21:05:24 administrateur CS

je pense que C clair, elle capture le hwnd d'une fenetre et met la capture dans un bmp.

Commentaire de JCDjcd le 28/07/2003 22:50:17

Ha ouais ! c'est super !
genial !

Commentaire de Kian_ix le 18/06/2007 21:49:26

un grand merci ta source est nikel

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales