VC程序中,屏幕抓图时如何才能和鼠标光标一起抓?

kui 2002-05-24 04:11:18
VC程序中,屏幕抓图时如何才能和鼠标光标一起抓?
现在我用函数BitBlt()及GetDIBits()无法实现.
程序如下:
CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
CBitmap bm;
int Width=GetSystemMetrics(SM_CXSCREEN);
int Height=GetSystemMetrics(SM_CYSCREEN);
bm.CreateCompatibleBitmap(&dc,Width,Height);

CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);

BITMAP btm;
bm.GetBitmap(&btm);
size=btm.bmWidthBytes*btm.bmHeight;
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
///////////////////////////////////
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*) &bih,DIB_RGB_COLORS);
static int filecount=0;
CString name;
name="pic0.bmp";
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){
bf.Write(&bfh,sizeof(BITMAPFILEHEADER));
bf.Write(&bih,sizeof(BITMAPINFOHEADER));
bf.Write(lpData,size);
bf.Close();
...全文
76 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
蒋晟 2002-05-24
记得ScreenToClient
  • 打赏
  • 举报
回复
DavidHowe 2002-05-24
鼠标的光标和屏幕图案不是在同一个逻辑显示层,鼠标有自己的驱动来重绘制下面被覆盖的区域,否则当鼠标移动时,也会产生WM_PAINT消息了。。
  • 打赏
  • 举报
回复
guangde 2002-05-24
这种方法还可行
  • 打赏
  • 举报
回复
madmanahong 2002-05-24
先记录鼠标位置,鼠标类型~

然后再把鼠标画在图片的相应位置上~:)
  • 打赏
  • 举报
回复
xue231 2002-05-24
好像没有什么好方法。包括用screen print也不能鼠标.
  • 打赏
  • 举报
回复
wmrwinhap 2002-05-24
to jiangsheng:
Very good !
But how do you get the“Hot spot”? If the“Hot spot”is not at the upper left corner, GetCursorPos will not return the upper left corner of the cursor image.
Thanks.

  • 打赏
  • 举报
回复
Q_O 2002-05-24
就是。
  • 打赏
  • 举报
回复
蒋晟 2002-05-24
use GetCursor to get cursor handle,and draw the cursor to the image
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2002-05-24 04:11
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……