MFC关于全屏截图,并进行全屏显示

对话框A中,win+F将屏幕保存到对话框B的CBitmap型变量中,然后对话框B全屏,并在OnPaint中显示Cbitmap。功能都实现了,但就是显示全是黑的。如果我将屏... 对话框A中,win+F将屏幕保存到对话框B的CBitmap型变量中,然后对话框B全屏,并在OnPaint中显示Cbitmap。功能都实现了,但就是显示全是黑的。如果我将屏幕保存到本地位图文件,OnPaint中就显示正常。下面是部分代码
win+F
//创建全屏dc
CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
//将dc拷贝到成员变量CBitmap
pDlgFullScreen->bmp.CreateCompatibleBitmap(&dc,cx,cy);

OnPaint()

//将成员变量CBitmap的信息传给新建的BITMAP
BITMAP bm;
bmp.GetBitmap(&bm);
//创建兼容设备dcMem
CDC dcMem;
dcMem.CreateCompatibleDC((CDC*)&dc);
dcMem.SelectObject(bmp);
//当前dc StretchBlt TBITMAP
dc.StretchBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
//
bmp.DeleteObject();
2015-16:00 谁来答题我就采纳~~~

找到问题了,win+F的时候只是创建了兼容位图并没有将屏幕信息传给CBitmap bmp
CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&(pDlgFullScreen->bmp));
//这句才是真正的将屏幕信息传给CBitmap
tdc.BitBlt(0,0,cx,cy,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
展开
 我来答
侦探章邯
推荐于2016-06-11 · TA获得超过579个赞
知道小有建树答主
回答量:830
采纳率:0%
帮助的人:605万
展开全部
我给你提供一个思路吧,具体代码就你自己写了。假设二维数组名字为a,即(*a)++就是在一行中向右移动,(*a)--就是在一行中向左移动,a++就是在一列中向下移动,a--就是向上移动。然后用一些循环语句将移动过程中经过的元素加起来就是外围元素的和了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式