找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 724|回复: 9

[求助]:如何判断鼠标的位置?

[复制链接]
发表于 2003-7-1 09:15:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我做了一个程序,如下图所示:
由于控制方式不合理,使程序不稳定,经常出错。
现在,我请教大家一个问题:当一个窗体显示后(非模态),如何才能知道鼠标移入和移出了窗体?我的目的是,鼠标移入窗体时,弹出窗体;鼠标移出窗体时,隐藏窗体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-7-1 10:39:08 | 显示全部楼层
都研究这种问题了。高啊

不知道你用的什么编程语言?如果是VB的话,vb6.0没有鼠标移进移出的事件,需要另外编程处理,网上有这方面的文章,我见过。vb.net好像已经有这种事件了。如果用其他语言,我就不知道了。

我没法设置邮件回复,不一定再回答你的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-1 12:41:38 | 显示全部楼层
最初由 god 发布
[B]都研究这种问题了。高啊

不知道你用的什么编程语言?如果是VB的话,vb6.0没有鼠标移进移出的事件,需要另外编程处理,网上有这方面的文章,我见过。vb.net好像已经有这种事件了。如果用其他语言,我就不知道了。
... [/B]

谢谢你的回复。
我现在用的是VBA和VL联合控制实现的(还没有做完),我不想用VB来设计,因为控制起来比较麻烦,如果实在没有办法,也只得采用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-1 14:07:32 | 显示全部楼层
应该是用API SETCAPTURE
网上查到的

  怎么在VB中实现Delphi那样的MouseEnter和MouseExit的功能?
   VB中的鼠标事件驱动只有MouseDown,MouseMove,MouseUp三个事件,没有象
Delphi那样提供MouseEnter(OnEnter)和MouseExit(OnExit)的事件。而这两个事件是平时编写程序经常要用到的,我们可以通过调用SetCapture和ReleaseCapture这两个Windows API函数的方法来实现它。具体步骤如下:
1)  在VB中新建一个标准EXE工程;
2)  画出一个按钮Command1;
3)  在窗体Form1中定义Windows API的声明;
Private Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
4)  在Command1的MouseMove事件中编写以下代码:
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim MouseEnter As Boolean  '鼠标进入的标志位
  
    MouseEnter = (0 <= X) And (X <= Command1.Width) And (0 <= Y) And (Y <= Command1.Height)              '计算鼠标的移动是否在Command1里面
    If MouseEnter Then          '鼠标已经进入
        Me.Caption = "Mouse In Button!"
        SetCapture Command1.hWnd
    Else                       '鼠标已经离开
        Me.Caption = "Mouse Out!"
        ReleaseCapture
    End If
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-1 14:09:21 | 显示全部楼层
vba和vb功能上大同小异,这个功能vb能做出来,vba也一样可以的。

有时间看看这个  
http://www.zjonline.com.cn/vbbib ... vb/ccw/htmapi79.htm

http://www.zjonline.com.cn/vbbib ... vb/ccw/htmapi65.htm

http://www.google.com/search?q=m ... 2&lr=lang_zh-CN
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-1 14:18:49 | 显示全部楼层
最初由 Laoyao 发布
[B]应该是用API SETCAPTURE
网上查到的

  怎么在VB中实现Delphi那样的MouseEnter和MouseExit的功能?
   VB中的鼠标事件驱动只有MouseDown,MouseMove,MouseUp三个事件,没有象
Delphi那样提供MouseEnter(OnEnte... [/B]

在VB中用SETCAPTURE可以实现,我已经试过。
可是在VBA中不知如何实现?因为SETCAPTURE要求带窗体句柄变量,VBA中的窗体好像没有句柄(也许是我不知道如何获取句柄)。
烦请LAOYAO(老妖)师父指点指点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-1 14:38:08 | 显示全部楼层
最初由 god 发布
[B]vba和vb功能上大同小异,这个功能vb能做出来,vba也一样可以的。

有时间看看这个  
http://www.zjonline.com.cn/vbbib ... vb/ccw/htmapi79.htm

[url]http://www.zjonline.com.cn/... [/B]

谢谢你给我介绍了这么多好地方。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-1 17:08:28 | 显示全部楼层
API FindWindow 如何
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
    MsgBox Str(Form1.hwnd) + Str(FindWindow(vbNullString, Form1.Caption)) + Form1.Caption
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-2 08:12:32 | 显示全部楼层
最初由 Laoyao 发布
[B]API FindWindow 如何
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
    MsgBox ... [/B]

谢谢,我先试一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-4 09:28:09 | 显示全部楼层
我的问题已经解决。
谢谢GOD姑娘!
谢谢老妖师父!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 13:01 , Processed in 0.434147 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表