怎样做出“大鼠标"?(如一支笔)?(100分)

  • 主题发起人 主题发起人 xydj
  • 开始时间 开始时间
1、用光标资源管理工具创建一笔形鼠标的图标,而后再控制。
2、用绘图板之类的工具绘一鼠标,而后添加OnMouseMove等的控制。
若指硬件的话,该“鼠标”被称之为光笔,勿需你再劳神研制,已无专利了!
 
1。用资源管理工具只能做32*32大小的鼠标
2。能具体讲讲方法2的做法吗?
 
用绘图板画一幅你较为满意的图,另存为*.Bmp或*.Gif(可实现动画功能),
而后编写使用OnMouseMove等事件来操纵该图像。具体的编程方法,可参见
大富翁里其它问题的结果。
 
这个问题有一定的难度,不如想象的那样简单。首先,你做的模拟鼠标必须是一个窗口
控件,因为只有窗口空件才能保持他在其他控件的前面;其次,该控件还必须是一个
透明空件。一个可以随着鼠标移动的透明窗体作起来肯麻烦的,你可以参考本论坛中
的关于透明窗体的问题以及鼠标拖动的问题。
 
是不是想使鼠标的个头大一些?还是修改屏幕的分辨率吧.
 
的确如huizhang所说,你用LoadCursor或者Screen.Cursor的方法能设置的
鼠标形状只能是32*32. 而要自己去画的话可以用一个透明的GIF图象来表示,
然后根据鼠标的移动改变此光标的位置就可以了. 但是这样这个鼠标只能出现
在你自己的窗口里面,到了别的窗口就会恢复原状....
PS: 32*32的鼠标已经够大了,还想要多大, 呵呵....
 
有没有什么控件可以实现?
 
用这个函数:
SetClassLong(handle, GCL_HCURSOR, hCurs2);
hCurs2为光标句柄.

我没有工具来绘制大于32x32的光标,所以无法测试这个函数.
 
找到一个工具,画了一个72x72的大光标,然后用:
SetClassLong(handle, GCL_HCURSOR, LoadCursorFromFile('c:/cursor.cur'));
设置窗口的光标,结果72x72被压缩成了32x32. :-(

于是再查API帮助,里面说cursor的尺寸是由当前的显示驱动支持的,windows
无法显示display不支持的cursor尺寸,如果要检查自己系统所支持的尺寸,可以
用GetSystemMetrics(SM_CXCURSOR)来得到,于是我用该函数测试我的系统,结果
是32.

看来方法应该是对的,只是display不支持而已.
 
很简单嘛.
思路:
1. 用全局mousehook. 为了跟踪mouse的位置.
2. 将crDefault的cursor置成一个空鼠标(可以用delphi的image editor做个
空cursor放到res中, 然后程序中将crDefault的鼠标图形改成这个空鼠标).
3. 用屏幕上直接画图的方法画一个自己的鼠标图形
(可以通过createdc('DISPLAY',nil,nil,nil)建立一个screen的dc, 然后直接在
上面画就成了).
4. 在hook程序中控制自己鼠标图形的移动.

用这方法, 随便多大的鼠标都成(哪怕整个屏幕一样的的鼠标也行)

如果多加点分我可以给你做一个 :)~
 
多人接受答案了。
 
后退
顶部