#pragma once #include "base_head.h" //bmp para pintar graficos antes de pintarlos en pantalla //asi se evita el parpadeo class UTILES_EXPORT Cbmp_control//falta revisar { public: //variables------------------------------------- BYTE* bits;//bits del bmp int ancho;//ancho en pixel del bmp int alto;//alto en pixel del bmp BITMAPINFO* bmp_info; HDC m_hdc; CDC *m_cdc; HBITMAP m_bitmap, m_old_bitmap; BOOL m_iniciado; //c y de------------------------------------------ Cbmp_control(int cx, int cy); ~Cbmp_control(); //funciones--------------------------------------- void pinta_dib(HDC dc, CRect r);//pinta lo dibujado en el bmp en el hdc pasado BOOL dib2file(char *path);//guarda el bmp en un archivo BOOL w2dib( CWnd *w, CRect *rec=NULL, DWORD flags=PRF_CLIENT);//copia la pantalla al bmp void redimensiona(int cx, int cy, BOOL limpiar=TRUE, char ch=0);//redimensiona el bmp void crea(BOOL limpiar=TRUE, char ch=0);//crea bmp void destruye();//destrulle bmp HDC dame_hdc();//da el hanled para pintar CDC* dame_cdc(); static BOOL w2file(CWnd *w,char* path, CRect *rec=NULL);//pasa lo contenido en la ventana a un archivo de imagen BYTE* dame_bits(){return bits;}; int dame_ancho(){return ancho;}; int dame_alto(){return alto;}; //BOOL guardar_bmp(char *path); void escribe_pixel(int x, int y, BYTE valor); void colorea_pixel(int x, int y, BYTE valor); void pinta_cruz(int x, int y, int ancho, BYTE color); void rellena_bits(char ch=0); void pon_bits(LPVOID src, int count); void mueve_datos(int cx, int cy); BOOL esta_iniciado(){return m_iniciado;}; void pon_iniciado(BOOL flag){m_iniciado=flag;}; public: }; /*void CCatchScreenDlg::SaveScreenToFile(LPCTSTR szFileName) { HDC hScrDC = ::GetDC(NULL); HDC hMemDC = NULL; BYTE *lpBitmapBits = NULL; int nWidth = GetSystemMetrics(SM_CXSCREEN); int nHeight = GetSystemMetrics(SM_CYSCREEN); hMemDC = ::CreateCompatibleDC(hScrDC); BITMAPINFO bi; ZeroMemory(&bi, sizeof(BITMAPINFO)); bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bi.bmiHeader.biWidth = nWidth; bi.bmiHeader.biHeight = nHeight; bi.bmiHeader.biPlanes = 1; bi.bmiHeader.biBitCount = 24; HBITMAP bitmap = ::CreateDIBSection(hMemDC, &bi, DIB_RGB_COLORS, (LPVOID*)&lpBitmapBits, NULL, 0); HGDIOBJ oldbmp = ::SelectObject(hMemDC, bitmap); ::BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, 0, 0, SRCCOPY); BITMAPFILEHEADER bh; ZeroMemory(&bh, sizeof(BITMAPFILEHEADER)); bh.bfType = 0x4d42; //bitmap bh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); bh.bfSize = bh.bfOffBits + ((nWidth*nHeight)*3); CFile file; if(file.Open(szFileName, CFile::modeCreate | CFile::modeWrite)) { file.Write(&bh, sizeof(BITMAPFILEHEADER)); file.Write(&(bi.bmiHeader), sizeof(BITMAPINFOHEADER)); file.Write(lpBitmapBits, 3 * nWidth * nHeight); file.Close(); } ::SelectObject(hMemDC, oldbmp); ::DeleteObject(bitmap); ::DeleteObject(hMemDC); ::ReleaseDC(NULL, hScrDC); } */