C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #1 在程序中可以通过LoadCursor来调入自定义的鼠标形状,但是怎样把 系统预设的几个标准鼠标形状改变成自定义的形状? 比如ReSize窗口 时的几种鼠标形状?
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #3 提醒一句: 我只想改变自己程序的鼠标,不想更改整个系统的.
W wrench Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #4 1 其实最简单的办法是将Resize状的光标替换掉,Delphi中它是一个系统的光标,索引 号是??,简单的把他在主Form Create的时候替换掉就行了: 如: //替换成标准的等待光标形状 Screen.Cursors[??] := Screen.Cursors[-11]; //替换成空,清除它 Screen.Cursors[??] := Screen.Cursors[-1]; ??是光标的索引号,自己找一下吧 2 打开lib/controls.res编辑一下, 一劳永逸
1 其实最简单的办法是将Resize状的光标替换掉,Delphi中它是一个系统的光标,索引 号是??,简单的把他在主Form Create的时候替换掉就行了: 如: //替换成标准的等待光标形状 Screen.Cursors[??] := Screen.Cursors[-11]; //替换成空,清除它 Screen.Cursors[??] := Screen.Cursors[-1]; ??是光标的索引号,自己找一下吧 2 打开lib/controls.res编辑一下, 一劳永逸
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #5 用这个方法好像没用? Screen.Cursors[??] := Screen.Cursors[-11];
H hubdog Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #7 screen.cursors[crhourglass]:=loadcursor(hinstance,yourcursorid);
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #8 hutdog你试一试: screen.cursors[crsizewe]:=loadcursor(hinstance,'SIZEWE'); 然后当鼠标移动到窗口边缘时,那个size光标还是以前的,没有起作用
hutdog你试一试: screen.cursors[crsizewe]:=loadcursor(hinstance,'SIZEWE'); 然后当鼠标移动到窗口边缘时,那个size光标还是以前的,没有起作用
O o*o Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #9 声明 procedure HitTest(var msg:TWMNCHITTEST);message WM_NCHITTEST; procedure TForm1.HitTest(var msg:TWMNCHITTEST); begin inherited; if msg.Result=HTLEFT then SetCursor(LoadCursor(0,IDC_HAND)); end; 如果Cursor在资源中,就换成SetCursor(LoadCursor(HInstance,'myCursor'));
声明 procedure HitTest(var msg:TWMNCHITTEST);message WM_NCHITTEST; procedure TForm1.HitTest(var msg:TWMNCHITTEST); begin inherited; if msg.Result=HTLEFT then SetCursor(LoadCursor(0,IDC_HAND)); end; 如果Cursor在资源中,就换成SetCursor(LoadCursor(HInstance,'myCursor'));
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #10 o*o: 还有问题. 现在光标出现了,但是我设计的SIZEWE光标(东西方向的), 为什么不能像以前的光标那样"骑"在窗口border上面,而只能在border 的左边或右边? 而且,当我按下鼠标开始drag窗口size时,鼠标又变回去了.
o*o: 还有问题. 现在光标出现了,但是我设计的SIZEWE光标(东西方向的), 为什么不能像以前的光标那样"骑"在窗口border上面,而只能在border 的左边或右边? 而且,当我按下鼠标开始drag窗口size时,鼠标又变回去了.
O o*o Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #11 你在设计Cursor时,应指定它的Hot Spot,缺省是(0,0)呀。 drag的问题我再想想。
O o*o Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #12 哦,在WM_SIZING里: if msg.wParam=WMSZ_LEFT then SetCursor(LoadCursor(0,IDC_HAND));
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #14 还有,现在sizing的时候可以乐,但是当鼠标在border上按下的时候还是没变, 只有开始拖曳size的时候才变化,还有什么消息需要捕获?
O o*o Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #15 改了Hot Spot要Build All Projects一下。 >>鼠标在border上按下的时候还是没变, 我这里就不是这样。我用的是D4,不会有什么差别吧。
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #17 WM_NCLBUTTONDOWN可以得到鼠标的位置CursorX,CursorY,从而可以 推算出鼠标是否在边框上.不过有没有简单的方法? 比如这个消息里面 的HitTest是什么意思? 能否直接利用? hot spot还是不行.
WM_NCLBUTTONDOWN可以得到鼠标的位置CursorX,CursorY,从而可以 推算出鼠标是否在边框上.不过有没有简单的方法? 比如这个消息里面 的HitTest是什么意思? 能否直接利用? hot spot还是不行.
沈 沈前卫 Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #19 procedure TForm1.MyMouse(var Message: TMessage); begin if Message.WParam=HTBOTTOMRIGHT then SetCursor(LoadCursor(0,IDC_HAND)); inherited; end;
procedure TForm1.MyMouse(var Message: TMessage); begin if Message.WParam=HTBOTTOMRIGHT then SetCursor(LoadCursor(0,IDC_HAND)); inherited; end;
沈 沈前卫 Unregistered / Unconfirmed GUEST, unregistred user! 2000-04-10 #20 用我的方法,只在WM_NCLBUTTONDOWN,WM_NCLBUTTONUP中改就行了.