cAkk:当鼠标移到我的程序外时,鼠标的形状依然是我的程序中定义的鼠标形状?(50分)

  • 主题发起人 主题发起人 lodgue
  • 开始时间 开始时间
L

lodgue

Unregistered / Unconfirmed
GUEST, unregistred user!
不要告诉我,按下鼠标移到程序外,而是直接移到程序外.
 
你在使用自定义鼠标时应先将,存在一个自已声明的鼠标变量中,以便在以后恢复。
可以让程序判断,当鼠标坐标位于窗口外时恢复鼠标,位于窗口内时重新定义鼠标。
 
我这里没问题呀!
哪位有时间测试一下这段代码:
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=206446
 
试试SetCapture和ReleaseCapture
 
cAkk,不是上次的问题.上次的问题已经解决.
这次的问题是:
当我的鼠标移到程序外时,鼠标会来回的抖动.(下面程序放在定时器中)
在我的程序内也发现抖动
procedure TForm1.Timer1Timer(Sender: TObject);
var
Wnd:hWnd;
CursorPos:TPoint;
hCursor:HIcon;
Threadld:DWord;
begin
hCursor:=LoadCursor(hInstance,PChar('Hand'));
//加载Hand光标
GetCursorPos(CursorPos);
Wnd:=WindowFromPoint(CursorPos);
Threadld:=GetWindowThreadProcessId(wnd,nil);
AttachThreadInput(GetCurrentThreadId,Threadld,True);
SetCursor(hCursor);
//设置为Hand光标
SetCapture(hcursor);

AttachThreadInput(GetCurrentThreadId,Threadld,False);
end;
 
设置整个系统的光标好像不能这样吧? 似乎有一个setsystemcursor函数.
如果只是在自己的程序里面改变光标,看看我的个人信息, 我最近提过一个
类似的问题.
 
我怎样进到你的个人信息中去?
 
cAkk:高!
var
hcursor:Hicon;
begin
hcursor:=loadcursor(hInstance,PChar('Hand'));
SetSystemCursor(hcursor,OCR_NORMAl);
end;
能够修改,不过我怎样动态来获取SetSystemCursor(hCur,ID);
中所要的ID值.程序自定义的光标有ID吗?能获取吗?
 
cAkk,帮我一把!!
 
cAkk:在往上吗?

 
为什么要动态获取ID? 这个函数被调用之后就一直起作用了,以后就不用设置了
 
简单,form上加一个Timer,每隔0.1秒
刷新一次 Screen.Cursor := ????
 
根本就不用timer,setsystemcursor之后就一直生效的.
 
1.但是用户自定义的光标能该吗?
2.我怎样恢复光标?restorecursor不知行不行,在delphi中无定义,我又不知道
在windows中的哪个dll中?
 
你到底要实现什么功能? 我听这有点糊涂了.
 
移到整个屏幕上任何一个对象(如:按钮,文字,窗口等)上,光标是我的程序中指定的
光标(SetSystemCursor能够实现),在我的程序退出后,光标还原成原来的光标.(注意不同的对象还原后的光标应该不不一样.)
就像SnagIt抓取一个窗口(广义上的包含编辑筐,面板等).
 
"SnagIt抓取一个窗口"的时候是把整个屏幕当成一个位图的吧?
 
如你所说.那它通过什么办法,来识别这整个屏幕位图上的不同'窗口'?
 
抓屏的时候为什么还要识别窗口? 你不是抓成一张位图吗? 和窗口有什么关系呢?
 
给我emali我发给你我的程序,抓取画了红圈的范围.
使用方法:
1.选择 CaptureRange|Object
2.按 Ctrl+B
3.鼠标马上画圈.我点一下鼠标抓去圈中的范围.

我要求鼠标移到任何一个圈中,都是我的自定义的光标形状.
当我点击了鼠标后,光标还原.
 
后退
顶部