永发信息网

如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式?

答案:3  悬赏:0  手机版
解决时间 2021-04-07 20:28
如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式?
最佳答案
代码 大概就是这样 有几个关键函数仔细一下,要是要完整代码呢留言
CDC memDC;
CBitmap memBitmap,*pOldBitmap;
CWindowDC dc(GetDesktopWindow());
memDC.CreateCompatibleDC(&dc);
int nWidth,nHeight;

CRect rect;
GetDesktopWindow()->GetWindowRect(rect);
ClientToScreen(&rect);
nWidth=rect.Width();
nHeight=rect.Height();
memBitmap.CreateCompatibleBitmap(&dc,nWidth,nHeight);
pOldBitsrc=memDC.SelectObject(&memBitmap);
// memDC.StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,rect.Width(),rect.Height(),SRCCOPY);
memDC.BitBlt(0,0,nWidth,nHeight,&dc,0,0,SRCCOPY);

BITMAPFILEHEADER BMFhead;
BITMAPINFOHEADER BMIhead;
BMFhead.bfReserved1=0;
BMFhead.bfReserved2=0;
BMFhead.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BMFhead.bfSize=BMFhead.bfOffBits+nWidth*nHeight*4;
BMFhead.bfType=0x4d42;

BMIhead.biBitCount=32;
BMIhead.biClrImportant=0;
BMIhead.biClrUsed=0;
BMIhead.biSizeImage=0;
BMIhead.biXPelsPerMeter=0;
BMIhead.biYPelsPerMeter=0;
BMIhead.biCompression=BI_RGB;
BMIhead.biHeight=nHeight;
BMIhead.biPlanes=1;
BMIhead.biSize=sizeof(BITMAPINFOHEADER);
BMIhead.biWidth=nWidth;

DWORD dwSize=nWidth*nHeight*4;
BYTE *pData=new BYTE[dwSize];
GetDIBits(memDC.m_hDC,(HBITMAP)memBitmap.m_hObject,0,nHeight,pData,(LPBITMAPINFO)&BMIhead,DIB_RGB_COLORS);

CFile file;
file.Open("test.bmp",CFile::modeCreate | CFile::modeWrite);
file.Write(&BMFhead,sizeof(BITMAPFILEHEADER));
file.Write(&BMIhead,sizeof(BITMAPINFOHEADER));
file.Write(pData,dwSize);
file.Close();
memDC.SelectObject(pOldBitmap);
MessageBox("绘图完毕");
GetParent()->ShowWindow(SW_SHOW);
全部回答
给你代码,发哪里
http://blog.csdn.net/zwmei/article/details/7440579
此文做了比较详细的解释,可以参考
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列各组词语中加点的字注音全都正确的一项是
西南政法大学有二本吗,西北政法大学今年还招
介绍几个好看的日本动漫,像斩赤红之瞳和七大
袅袅或者utau怎么做自己的虚拟歌姬
燕窝原盏和原密盏区别
积累中我明白了该怎么写
表示童趣的诗句三千尺,求少年智慧、童趣、联
阅读下文,回答问题。鸟梁实秋我爱鸟。从前我
俄国,苏俄,沙俄,苏联,俄罗斯,时间段与区
我的世界超平坦地图种子
我想问下开心钱包晚上审核吗?
3m被骗30万报警有用吗
什么thewindow填空
夫妻在分居期间和别人同居会追究什么样的责任
能证明地球是个球体的最具说服力的证据是A.人
推荐资讯
如图所示的电路中,电源电压不变,当滑动变阻
中国石油宝坻鸿泰加油站在哪里啊,我有事要去
东成西就真TM的难看吗
如何制作升压器(制作MP4主板上控制背光亮度
桑塔纳踩刹车方向盘抖动
魔兽世界联盟怎么去北风苔原
怎么下载扫描仪驱动,扫描仪驱动安装后,怎么
这几个人物分别出自哪些动漫?
excel四连单怎样才设置得好表格
丙寅甲午甲午甲子伤官伤尽了吗
单选题1947年,解放区土改能够普遍实行的因素
竹风苑美食城地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?