一个IDC_MYICON资源,通过DrawIconEx()可以把此图标显示在屏幕上,想要实现此图标跟随鼠标移动,并且屏幕没有明显延迟,请问如何实现? 谢谢!hdc = GetDesktopWindow();
...
...
DrawIconEx(hwnd, ...);
....
...
...
DrawIconEx(hwnd, ...);
....
解决方案 »
- SetWindowText 背景透明?
- 求一个MSN sniffer 源代码
- 让进程暂停执行一段时间的API有吗?
- 异常宏与try\catch有什么不同,CString的operator LPCTSTR()方法是干什么的
- 请教高手str=(char*)(unsigned char*)m_input.parray->pvData是什么意思?m_input是Variant类型,立刻结贴
- 哪里有QQ通讯的协议??
- 用过BCGControl的请进!
- 求 “SC1801” 规约资料,若有C参考源码重谢!
- 调用过ZwCreateFile的朋友请帮忙.
- 数据库连接问题
- OCX如何不降低浏览器安全性就可以安装和运行
- MFC picture控件 鼠标响应
HCURSOR cursor = (HCURSOR)LoadImage(hinstance, MAKEINTRESOURCE(IDC_CURSOR1), IMAGE_CURSOR, 0, 0, LR_DEFAULTCOLOR);
再
SetCursor(cursor);
HDC hDC = GetWindowDC(hWnd);
HICON hIcon = ::LoadIcon(AfxGetApp()-> m_hInstance, MAKEINTRESOURCE(IDI_ICON_CURSOR));
::DrawIconEx(hDC, rgnX, rgnY, hIcon, 16, 16, 0, NULL, DI_NORMAL);不是把鼠标光标变成自定义图标,而是通过鼠标控制该图标的移动。
在codeproject网站
func1()
{
which (true)
{
x = y = 0;
Draw(x, y);
x++; y++;
if (x>500 || y>500)
break;
}
}// 负责画图
Draw(int x, int y)
{
HWND hWnd = GetDesktopWindow();
//创建屏幕DC
HDC hDC = GetWindowDC(hWnd);
//创建内存DC
HDC hMemDC = CreateCompatibleDC(hDC); CBitmap hBitmap;
hBitmap.LoadBitmap(IDB_BMP_CURSOR);
HBITMAP oldBitmap = (HBITMAP)::SelectObject(hMemDC, hBitmap); ::TransparentBlt(hDC, x, y, 32, 32, hMemDC, 0, 0, 32, 32, RGB(0,0,0)); ::SelectObject(hMemDC, oldBitmap);
::DeleteObject(hBitmap);
//删除内存DC
::DeleteDC(hMemDC);
//释放屏幕DC
::ReleaseDC(hWnd, hDC);
}现在问题是,图片能显示出来,也能移动,但是没有清除以前画出来的图片,导致屏幕上显示了多个同样的图片。即:如何Draw(1,1)时把Draw(0,0)的图片清除掉并且不导致屏幕闪动?谢谢!
至于code,百度一下,例子非常多,而且代码行不到30行。