我在picture控件里面放了很多button edit 等然后想用print来答应picture里面的内容,开始是用在屏幕上截取的方法,但是发现换了宽屏的机器就不好用了,所以想直接提取picture控件里面的东西,用图像显示出来好方便打印。picture控件选择的是框架类型的。求方法~
解决方案 »
- WebBrowser应用程序中调用脚本函数并返回结果
- 重开100分帖,讨论绘制快速走动的仪表时,怎样降低CPU占用率的方法
- 哪里有自绘Trackbar的资料?
- 请问:‘金山词霸中’中的单词读音是怎么实现的?
- 高分收购: 请问有没有windows xp embeded 的开发工具.价格大概多少 !??????????????
- To Genghiskhan 大虾!!如何用程序控制禁用和启用本地的网络连接?
- 请教: tide(水手辛巴德) 同志
- 两个 .exe 执行文件之间怎么通信??
- 请教达人,怎样获得打印机的状态,要真正能用的信息
- 提问:多少程序员是唯心/唯物主义者?
- VC用套接字如何实现内网和外网的通信
- 使用VC6.0的问题
CClientDC SHDC(this);//
CPaintDC dc(this);
CDC memDC;
CRect rect;
GetClientRect(rect);
memDC.CreateCompatibleDC(&SHDC);
CBitmap bm;
int Width = rect.Width();//
int Height = rect.Height();//
bm.CreateCompatibleBitmap(&SHDC, Width, Height);
CBitmap* pOld = memDC.SelectObject(&bm);
memDC.BitBlt(0, 0, Width, Height, &SHDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size = btm.bmWidthBytes * btm.bmHeight;
LPSTR lpData =(LPSTR)GlobalAlloc(GPTR, size);
BITMAPFILEHEADER bfh;
/////////////////////////////////////////////
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);
bfh.bfReserved1 = bfh.bfReserved2 = 0;
bfh.bfType = ((WORD)('M'<< 8)|'B');
bfh.bfSize = 54 + size;
bfh.bfOffBits = 54;
CFileDialog dlg(false,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()==IDOK)
{
CFile bf;
CString ss=dlg.GetPathName();
if(bf.Open(ss, CFile::modeCreate | CFile::modeWrite))
{
bf.WriteHuge(&bfh, sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih, sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData, size);
bf.Close();
}
GlobalFree(lpData);
}