13,825
社区成员
发帖
与我相关
我的任务
分享
HCURSOR SrcCur,DscCur,DscCur1;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TIconInfo IconInfo;
SrcCur = GetCursor();
if(SrcCur)
{
ShowMessage("获取鼠标指针");
DscCur = CopyCursor( SrcCur);
if(DscCur)
{
ShowMessage("复制指针成功");
if(GetIconInfo(SrcCur,&IconInfo))
{
ShowMessage("获取指针信息成功");
Graphics::TBitmap *bmp1 = new Graphics::TBitmap();
Graphics::TBitmap *bmp2 = new Graphics::TBitmap();
bmp2->Handle = IconInfo.hbmMask;
bmp1->Handle = IconInfo.hbmColor;
if(StretchBlt(bmp2->Canvas->Handle,0,0,bmp2->Width,bmp2->Height,bmp2->Canvas->Handle,0,0,bmp2->Width,bmp2->Height,NOTSRCCOPY)) //BLACKNESS NOTSRCCOPY
{
ShowMessage("位图反色成功");
IconInfo.hbmMask = bmp2->Handle;
// IconInfo.hbmColor = bmp1->Handle ;
DscCur1 = CreateIconIndirect(&IconInfo);
if(DscCur1)
{
ShowMessage("重新构造指针成功");
if(DestroyCursor(SrcCur))
ShowMessage("销毁鼠标指针成功");
// DscCur1 = LoadCursor(NULL,IDC_WAIT );
if(::SetCursor(DscCur1))
{
Sleep(3000); //这里延时是为了让你看清楚效果
ShowMessage("重设鼠标指针成功");
}
}
}
delete bmp1,bmp2;
}
} else ShowMessage("复制指针成功失败");
}
else ShowMessage("获取鼠标指针错误");
}
根据你得思路获得当前鼠标位图,反色以后,就成了鼠标指针是白色,但是鼠标周围就成了黑色。你要获得指针图像得范围,然后再处理就相当得麻烦。向比较而言,弄个对比鲜明得指针文件要容易得多。你可以考虑指针有不同得颜色描边儿,这样就鲜明得多了。