L liangliang Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-23 #1 如何响应屏幕上的鼠标事件。如屏幕上作图之类的。
W wkf76 Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-23 #2 在onmousemove,onmousedown,onmouseup事件中处理,
W wkf76 Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-23 #4 你要在form上做图的话,就在form的那些mouse事件中处理, 你看事件参数,可以知道当前mouse position,which button is pressed...
L liangliang Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-24 #5 我指的屏幕是桌面上。 是这样的,我想实现的功能是鼠标在屏幕上移动,若移动到某应用程序则能在应用程序上画出一个框。这类似于'HyperSnap-Dx'中的用windows截图 时所见的情形。 不知如何实现,或者谁能告诉我HyperSnap-Dx是怎么作的。
我指的屏幕是桌面上。 是这样的,我想实现的功能是鼠标在屏幕上移动,若移动到某应用程序则能在应用程序上画出一个框。这类似于'HyperSnap-Dx'中的用windows截图 时所见的情形。 不知如何实现,或者谁能告诉我HyperSnap-Dx是怎么作的。
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-24 #6 一个很简单的办法: 建立一form, setwindowrgn(form.handle, createrectrgn(-1,-1,0,0), true); setcapture(form.handle), 然后就可以用form.onmousemove, onmousedown, onmouseup等事件了, 而且窗口在屏幕上不可见(却是actived).
一个很简单的办法: 建立一form, setwindowrgn(form.handle, createrectrgn(-1,-1,0,0), true); setcapture(form.handle), 然后就可以用form.onmousemove, onmousedown, onmouseup等事件了, 而且窗口在屏幕上不可见(却是actived).
L liangliang Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-25 #8 To Another_eYes: 你的方法虽然简单但并能解决我的问题啊。 setcapture 只有在当前程序活动时有效,而且我在哪画框呢? 我发现HyperSnap-Dx截图时画面是静止的,所以我猜想它也许是先将整个屏幕截 下,然后在该图上处理画框,但若鼠标在该图上移动又如何取得其它程序句柄以取得某 window的rect,去画画框呢?难道可以在form上移动而把鼠标移动映射到桌面以取 得句柄? 不知哪位高手能指点一二?
To Another_eYes: 你的方法虽然简单但并能解决我的问题啊。 setcapture 只有在当前程序活动时有效,而且我在哪画框呢? 我发现HyperSnap-Dx截图时画面是静止的,所以我猜想它也许是先将整个屏幕截 下,然后在该图上处理画框,但若鼠标在该图上移动又如何取得其它程序句柄以取得某 window的rect,去画画框呢?难道可以在form上移动而把鼠标移动映射到桌面以取 得句柄? 不知哪位高手能指点一二?
阿 阿蒙 Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-26 #9 anothereyes 的方法应该可以.就是你启动的程序在后台运行.如同在屏幕上画一样 我只知道如何可以建立程序接受系统消息. private procedure wndproc(var message;tmessage); . . procedure tform1.wndproc(var message;tmessage); var pos:tpoint; dc:hdc; begin if message.lparam=wm_mousemoue then getdc(0);屏幕句柄 getcursor(pos);鼠标位置; . .如何画图调用 winapi 自己查吧!
anothereyes 的方法应该可以.就是你启动的程序在后台运行.如同在屏幕上画一样 我只知道如何可以建立程序接受系统消息. private procedure wndproc(var message;tmessage); . . procedure tform1.wndproc(var message;tmessage); var pos:tpoint; dc:hdc; begin if message.lparam=wm_mousemoue then getdc(0);屏幕句柄 getcursor(pos);鼠标位置; . .如何画图调用 winapi 自己查吧!
O o*o Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #10 在一个Timer里试试下面代码,不想用Timer就用Mouse Hook。 var p:TPoint; r:TRect; begin GetCursorPos(p); GetWindowRect(WindowFromPoint(p),r); DrawFocusRect(GetDC(0),r); //画Rect的方法参照这句自己发挥吧。 end;
在一个Timer里试试下面代码,不想用Timer就用Mouse Hook。 var p:TPoint; r:TRect; begin GetCursorPos(p); GetWindowRect(WindowFromPoint(p),r); DrawFocusRect(GetDC(0),r); //画Rect的方法参照这句自己发挥吧。 end;
L liangliang Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #11 to o*o: In fact, your method is just my orinal manner, But two problem: How to back? Getdc may occupy memory more and more with timer used. To 阿蒙: I have tried, but Wndproc cannt effect when the app is not actived.
to o*o: In fact, your method is just my orinal manner, But two problem: How to back? Getdc may occupy memory more and more with timer used. To 阿蒙: I have tried, but Wndproc cannt effect when the app is not actived.