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); 展开
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); 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询