怎么在程序中截屏并存成指定格式? 我想在我的程序中能够将当前屏慕截下来并以指定格式存放好,如jpg,谁有这方面的经验,思路也好,代码也好,当然最好是有简单的代码,感谢不尽,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CDC dc; dc.CreateDC("DISPLAY",NULL,NULL,NULL); CBitmap bm; int Width=GetSystemMetrics(SM_CXSCREEN); int Height=GetSystemMetrics(SM_CYSCREEN); bm.CreateCompatibleBitmap(&dc,Width,Height); CDC tdc; tdc.CreateCompatibleDC(&dc); CBitmap*pOld=tdc.SelectObject(&bm); tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY); tdc.SelectObject(pOld); BITMAP btm; bm.GetBitmap(&btm); DWORD size=btm.bmWidthBytes*btm.bmHeight; LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size); ///////////////////////////////////////////// BITMAPINFOHEADER bih; bih.biBitCount=btm.bmBitsPixel; bih.biClrImportant=0; bih.biClrUsed=0; bih.biCompression=0; bih.biHeight=btm.bmHeight; bih.biPlanes=1; bih.biSize=sizeof(BITMAPINFOHEADER); bih.biSizeImage=size; bih.biWidth=btm.bmWidth; bih.biXPelsPerMeter=0; bih.biYPelsPerMeter=0; GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS); static int filecount=0; BITMAPFILEHEADER bfh; bfh.bfReserved1=bfh.bfReserved2=0; bfh.bfType=((WORD)('M'<< 8)|'B'); bfh.bfSize=54+size; bfh.bfOffBits=54; m_size=size+sizeof(bfh)+sizeof(bih); m_Data=new char[m_size]; memset(m_Data,0,sizeof(m_size)); memcpy(m_Data,&bfh,sizeof(bfh)); memcpy(m_Data+sizeof(bfh),&bih,sizeof(bih)); memcpy(m_Data+sizeof(bfh)+sizeof(bih),lpData,size); ::GlobalFree(lpData); pOld->DeleteObject(); tdc.DeleteDC(); dc.DeleteDC(); bm.DeleteObject(); 截屏生成bmp比较好办,得到bmp之后再转换为jpg吧直接生成jpg好像不容易 怎么知道 m_pConnection->Execute()操作是否成功 子对话框问题 一个读卡器程序,当程序运行时如何知道读卡器里有卡插入?并作出相应反应? CSplitterWnd右边切换视图的问题,抄了十多个兄弟的代码都出现相似错误(很久没有送分了,帮我解决问题即送50分,言出必行!) 关于控件下载。 control中的tab control怎么用 请问 如何跟改一个静态文本的颜色啊? MFC登录界面登录时提示错误? COM1 转数据问题! 关于ActiveX无法解决的问题 [超简单问题]解决,马上送分!!!怎样在程序中改变一个控件的大小? 如何将一段HTML源代码通过IE显示出来?
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
CBitmap bm;
int Width=GetSystemMetrics(SM_CXSCREEN);
int Height=GetSystemMetrics(SM_CYSCREEN);
bm.CreateCompatibleBitmap(&dc,Width,Height);
CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size);
/////////////////////////////////////////////
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
static int filecount=0;
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
m_size=size+sizeof(bfh)+sizeof(bih);
m_Data=new char[m_size];
memset(m_Data,0,sizeof(m_size));
memcpy(m_Data,&bfh,sizeof(bfh));
memcpy(m_Data+sizeof(bfh),&bih,sizeof(bih));
memcpy(m_Data+sizeof(bfh)+sizeof(bih),lpData,size); ::GlobalFree(lpData);
pOld->DeleteObject();
tdc.DeleteDC();
dc.DeleteDC();
bm.DeleteObject();
直接生成jpg好像不容易