HBITMAP CGetScreenPrintDlg::CutScreen(LPRECT lprect)
{
HDC hscreendc,hmemdc; //screen and memory DEVICE TABLE;
HBITMAP hbitmap, holdmap;
int nposx,nposy,nposx2,nposy2;
int nWidth,nHeight;
int xScreen,yScreen;
if (IsRectEmpty(lprect)) //判断是否为空矩形
{
return NULL;
} hscreendc=CreateDC("DISPLAY",NULL,NULL,NULL);//创建屏幕HDC
hmemdc=CreateCompatibleDC(hscreendc); //创建MEMORY HDC; nposx=lprect->left;
nposy=lprect->top;
nposx2=lprect->right;
nposy2=lprect->bottom;
//**********得到屏幕的分辨率*************
xScreen=GetDeviceCaps(hscreendc,HORZRES); //水平方向
yScreen=GetDeviceCaps(hscreendc,VERTRES); //垂直方向 if (nposx<0) nposx=0;
if (nposx2>xScreen) nposx2=xScreen; if (nposy<0) nposx=0;
if (nposx2>yScreen) nposy2=yScreen;
nWidth=nposx2-nposx; //得到WIDTH
nHeight=nposy2-nposy; //得到HEIGHT //**********创建一个与屏幕设备描述表兼容的位图
hbitmap=CreateCompatibleBitmap(hscreendc, nWidth , nHeight); //*********把屏幕的位图考到内存中***********
holdmap=(HBITMAP)SelectObject(hmemdc,hbitmap);
//得到屏幕位图的HANDLE;
BitBlt(hmemdc,0,0,nWidth ,nHeight,hscreendc,nposx,nposy,SRCCOPY);
hbitmap=(HBITMAP)SelectObject(hmemdc,holdmap);
红色的这部分代码我实在是不明白,谁能举个形象的例子啊。谢谢了。
//m_picture0.SetBitmap(hbitmap);
DeleteDC(hscreendc);
DeleteDC(hmemdc);
return hbitmap;
}
{
HDC hscreendc,hmemdc; //screen and memory DEVICE TABLE;
HBITMAP hbitmap, holdmap;
int nposx,nposy,nposx2,nposy2;
int nWidth,nHeight;
int xScreen,yScreen;
if (IsRectEmpty(lprect)) //判断是否为空矩形
{
return NULL;
} hscreendc=CreateDC("DISPLAY",NULL,NULL,NULL);//创建屏幕HDC
hmemdc=CreateCompatibleDC(hscreendc); //创建MEMORY HDC; nposx=lprect->left;
nposy=lprect->top;
nposx2=lprect->right;
nposy2=lprect->bottom;
//**********得到屏幕的分辨率*************
xScreen=GetDeviceCaps(hscreendc,HORZRES); //水平方向
yScreen=GetDeviceCaps(hscreendc,VERTRES); //垂直方向 if (nposx<0) nposx=0;
if (nposx2>xScreen) nposx2=xScreen; if (nposy<0) nposx=0;
if (nposx2>yScreen) nposy2=yScreen;
nWidth=nposx2-nposx; //得到WIDTH
nHeight=nposy2-nposy; //得到HEIGHT //**********创建一个与屏幕设备描述表兼容的位图
hbitmap=CreateCompatibleBitmap(hscreendc, nWidth , nHeight); //*********把屏幕的位图考到内存中***********
holdmap=(HBITMAP)SelectObject(hmemdc,hbitmap);
//得到屏幕位图的HANDLE;
BitBlt(hmemdc,0,0,nWidth ,nHeight,hscreendc,nposx,nposy,SRCCOPY);
hbitmap=(HBITMAP)SelectObject(hmemdc,holdmap);
红色的这部分代码我实在是不明白,谁能举个形象的例子啊。谢谢了。
//m_picture0.SetBitmap(hbitmap);
DeleteDC(hscreendc);
DeleteDC(hmemdc);
return hbitmap;
}
解决方案 »
- 简单的重绘标题栏问题(附所有代码,100分献!)
- vc系统登陆时怎么像qq那样记住密码和用户名
- int length; BYTE* values = (BYTE*)&length + sizeof(length); 这段怎解?
- GetDlgItem(IDC_Clear)->SetWindowText("");出现不能转换
- 高人:有什么好办法让编译器,在不同的配置下,选择不同的资源编译?
- 百分寻找两本书,顶者有分!!
- 有谁知道怎样让漂浮的工具条的关闭按钮禁止的吗 或者 在显示浮动工具条时就不显示标题栏
- 获取摄像头WebCam拍摄图像中的一帧该用什么函数?
- 请问哪有《Windows程序设计》电子书可以下载?谢谢
- 动态链接库里面的
- 如何将Double 数组用逗号分割,转成一个字符串
- 键盘过滤驱动动态卸载,不使用计数
holdmap=(HBITMAP)SelectObject(hmemdc,hbitmap); 与白纸图片对齐
BitBlt(hmemdc,0,0,nWidth ,nHeight,hscreendc,nposx,nposy,SRCCOPY); 复制粘贴
hbitmap=(HBITMAP)SelectObject(hmemdc,holdmap); 把原来的纸放回