怎样改变预设的鼠标形状?(200分)

  • 主题发起人 主题发起人 cAkk
  • 开始时间 开始时间
/呵呵,再来个完整点的

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure MyMouseLBTNDown(var Message:TMessage);message WM_NCLBUTTONDOWN;
procedure MyMouseMove(var Message:TMessage);message WM_NCMOUSEMOVE;
end;

var

Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.MyMouseLBTNDown(var Message: TMessage);
begin
if Message.WParam=HTBOTTOMRIGHT then SetCursor(LoadCursor(0,IDC_HAND));
inherited;
end;

procedure TForm1.MyMouseMove(var Message: TMessage);
begin
if Message.WParam=HTBOTTOMRIGHT then SetCursor(LoadCursor(0,IDC_HAND));
inherited;
end;

end.
 
见鬼了,我这里没有任何你说的问题。用不着WM_NCLBUTTONDOWN
yhfang,DELPHI资源里根本就没有这些Cursor,看看Control.res就知道了。
 
WM_NCMOUSEMOVE是肯定要的。
 
前卫兄,我是说用WM_NCHITTEST和WM_SIZING,就没必要WM_NCLBUTTONDOWN。
你给改编成了WM_NCLBUTTONDOWN和WM_NCMOUSEMOVE,其实是一样的。
 
o*o兄:
WM_NCMOUSEMOVE是必须要的,当你鼠标在窗体右下角时,会触发WM_NCMOUSEMOVE
但不会触发WM_NCHITTEST和WM_SIZING,系统此时会提供缺省光标。如果在
WM_NCMOUSEMOVE中也改,就更完美了。

还有,你对系统了解比较生客,有空教教我,当然还有Pipi.,Hubdog,eEyes......
 
前卫兄,你太客气了,我对系统的了解太一般了,象huizhang,eyes,pegasus
这样的高手才叫精通。

另外我不同意你的观点,WM_NCHITTEST在任何时候都会触发。
比如说Form角上的情况,加上if msg.Result=HTBOTTOMLEFT then就可以。
 
对系统的了解反正比我强. 能者为师嘛.


呵呵,我老是用鼠标在右边移动,原来你使用的左边。
 
哈! 趁我不在,你们就聊上了? 还没解决hot spot的问题哪!
 
昨天我就现做了一个Cursor,设Hot Spot为(16,16),骑在边框上没有问题。
不知你的问题出在哪儿。
 
设置hot spot是不是只要在imageeditor里面用菜单命令设置hit spot的
x,y坐标就可以了? 不用设置别的?

我就是这样设置的,但是现在我的鼠标是这样的:
+--------------+
| |
| |
|<==&gt |
| |
+--------------+

我希望是这样的:
+--------------+
| |
| |
<==&gt |
| |
+--------------+
 
我前面说过,改了Hot Spot要Build All Projects一下。你作了吗?
 
Build过无数遍了.
 
你是把Cursor单独存在一个myCur.Res文件里了吗,我就是这样作的,没有问题。
 
MD,终于搞定了,昨天怎么也不能"骑"在边框上,今天却可以乐. :-[ &*^&$^%#^%#

o*o: 只用HitTest确实不行,前卫说的是对的.
 
多人接受答案了。
 
呵呵,作出来了就好,不过你的给分的确很奇怪。:-)
 
后退
顶部