用VC++如何获取屏幕图像,且显示出来

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:59:24
用VC++如何获取屏幕图像,且在用一个对话框按钮就能将刚才获取的屏幕图像显示出来。注意是一按下按钮就显示出来,不是要选择路径那种!还有就是对话框按钮那个悬浮按钮在获取屏幕图像时,不要获取!最好有个工程源码,还有设计过程!

HBITMAP holdbitmap,hbitmap;
HDC hdc,hscreendc,hmemdc;
hdc=GetWindowDC(hwnd);//获得整个hwnd指向的窗口的DC
GetWindowRect(hwnd,&rect);//获得窗口矩形
hscreendc=CreateDC("DISPLAY",NULL,NULL,NULL);//获得整个屏幕的设备DC
hmemdc=CreateCompatibleDC(hdc);//创建与设备DC兼容的内存DC
hbitmap=CreateCompatibleBitmap(hscreendc,GetDeviceCaps(hdcScreen,HORZRES),GetDeviceCaps(hdcScreen,VERTRES)); //创建与屏幕DC兼容的位图
holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);//将hbitmap指向的位图选入内存DC,返回值为原来的位图holdbitmap,先保存下来后面恢复
BitBlt(hmemdc,0,0,rect.right-rect.left,rect.bottom-rect.top,hscreendc,0,0,SRCCOPY);//将设备DC的图象复制到内存DC,这样就把屏幕图象保存到hbitmap所指向的BITMAP结构体中了

点击按钮后,再用BitBlt显示出来:
case WM_COMMAND:
holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);//将保存图象的hbitmap选进内存DC
BitBlt(hdc,0,0,rect.right-rect.left,rect.bottom-rect.top,hmemdc,0,0,SRCCOPY);//将内存DC的图象显示到窗口上
以上注意hbitmap变量的作用范围

代码如下:

HBITMAP holdbitmap,hbitmap;
HDC hdc,hscreendc,hmemdc;
hdc=GetWind