有什么简单的办法,请给一点源码。谢谢
解决方案 »
- _RecordsetPtr 资源施放问题
- 请教一个窗口切换的问题!
- 求二进制波形显示的例子
- 我自己定义的类怎么不能被识别呀?
- 怎样把在ACCESS里建立的报表在VC里显示出来,急!!!
- 如何把 BMP,ICO 文件添加到一个已经编译生成好的EXE 文件,并赋给一个ID号??
- Socket中多线程、异步、同步的优劣比较,拜托各位了!!!!
- 哪有《The Standard C++ Bible》,《Exceptional C++》,《Inside The C++ Object Model》下?? 任一个可下的都给分!!!
- 为什么windows会经常性的崩溃,而dos则比较少见?
- 靠,无缘无故就多了一个线程
- 普通CEdit控件的几个问题
- 如何编程实现恢复指定目录下的某个文件,用2k系统的recover总是提示驱动器被锁定???
设置相应的BITMAPFILEHEADER等,然后写文件.
GetDlgItem(IDC_Draw)->GetWindowRect(rect);
(GetDlgItem(IDC_Draw)->GetParent())->ScreenToClient(rect); CWindowDC dc(GetDlgItem(IDC_Draw)); BITMAPINFO bi;
void *pBits=NULL;
int nWidth=rect.right;
int nHeight=rect.bottom;
ZeroMemory(&bi,sizeof(bi));
bi.bmiHeader.biSize=sizeof(bi.bmiHeader);
bi.bmiHeader.biHeight=nHeight;
bi.bmiHeader.biWidth=nWidth;
bi.bmiHeader.biPlanes=1;
bi.bmiHeader.biBitCount=24;
bi.bmiHeader.biCompression=BI_RGB;
bi.bmiHeader.biSizeImage=3*nWidth*nHeight;
HDC hDesktopCompatibleDC=::GetDC(GetDlgItem(IDC_Draw)->GetSafeHwnd());
HDC hBmpFileDC=CreateCompatibleDC(hDesktopCompatibleDC);
HBITMAP hBmpFileBitmap=CreateDIBSection(hDesktopCompatibleDC,&bi,DIB_RGB_COLORS,&pBits,NULL,0);
SelectObject(hBmpFileDC,hBmpFileBitmap);
BitBlt(hBmpFileDC,0,0,nWidth,nHeight,hDesktopCompatibleDC,0,0,SRCCOPY); HANDLE hFile=CreateFile("test.bmp",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile!=INVALID_HANDLE_VALUE)
{
DWORD dwRet=0;
BITMAPFILEHEADER bmfHeader;
ZeroMemory(&bmfHeader,sizeof(bmfHeader));
bmfHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
bmfHeader.bfSize=bi.bmiHeader.biSizeImage+bmfHeader.bfOffBits;
bmfHeader.bfType='MB'; WriteFile(hFile,&bmfHeader,sizeof(bmfHeader),&dwRet,NULL);
WriteFile(hFile,&bi.bmiHeader,sizeof(bi.bmiHeader),&dwRet,NULL);
WriteFile(hFile,pBits,bi.bmiHeader.biSizeImage,&dwRet,NULL);
CloseHandle(hFile);
} DeleteDC(hBmpFileDC);
DeleteObject(hBmpFileBitmap);