jjzjj

BITMAPINFOHEADER

全部标签

c++ - 在 Windows 8.1 中捕获 PC 的整个屏幕截图

我正在制作一个截取整个屏幕截图的C++程序。我面临着一个很大的问题。当我运行该程序时,它只截取控制台屏幕的屏幕截图,而不是整个桌面。HDCScreen=CreateDC(L"DISPLAY",NULL,NULL,NULL);HDCCapture=CreateCompatibleDC(Screen);intwidth=GetDeviceCaps(Screen,HORZRES);intheight=GetDeviceCaps(Screen,VERTRES);LPBYTElpcapture;BITMAPINFObmiCapture={{sizeof(BITMAPINFOHEADER),wid

使用GetDIBits()获取Windows位图数据的标准用法,解决内存、堆栈报错问题

获取图标的位图数据分两次使用GetDIBits(),以便于正确设置缓存的大小正确设置BITMAPINFO的大小,否则就会报堆栈溢出错误ICONINFOinfo={0};GetIconInfo(hIcon,&info)HDCbmp,maskbmp;bmp=CreateCompatibleDC(NULL);SelectObject(bmp,info.hbmColor);maskbmp=CreateCompatibleDC(NULL);SelectObject(maskbmp,info.hbmMask);BYTE*lpvBits=NULL;intnRet=2;//正确设置BITMAPINFO的大小,

使用GetDIBits()获取Windows位图数据的标准用法,解决内存、堆栈报错问题

获取图标的位图数据分两次使用GetDIBits(),以便于正确设置缓存的大小正确设置BITMAPINFO的大小,否则就会报堆栈溢出错误ICONINFOinfo={0};GetIconInfo(hIcon,&info)HDCbmp,maskbmp;bmp=CreateCompatibleDC(NULL);SelectObject(bmp,info.hbmColor);maskbmp=CreateCompatibleDC(NULL);SelectObject(maskbmp,info.hbmMask);BYTE*lpvBits=NULL;intnRet=2;//正确设置BITMAPINFO的大小,