FORM中插入一个FLASH控件后,FORM的鼠标事件失效了。

jiaxueq 2016-07-08 11:13:57

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
msgbox "点击FORM,会弹出来的“
End Sub

但是加了一个FLASH控件后(FLASH控件为FORM的大小),遮挡了FORM,

此时FORM的mousedown就没反应了。

怎么解决呢?
...全文
254 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
是这样的吧,在FLASH左边,右边移动鼠标,能反应不同的XY坐标

  • 打赏
  • 举报
回复
如果说FLASH控件只是用来查看不需要操作的话是可以做到的
jiaxueq 2016-08-04
  • 打赏
  • 举报
回复
谢谢大家了。
jiaxueq 2016-08-04
  • 打赏
  • 举报
回复
引用 21 楼 Chen8013 的回复:
[quote=引用 18 楼 jiaxueq 的回复:] [quote=引用 15 楼 Chen8013 的回复:] [quote=引用 14 楼 jiaxueq 的回复:] [quote=引用 13 楼 Chen8013 的回复:] [quote=引用 12 楼 jiaxueq 的回复:] [quote=引用 10 楼 Chen8013 的回复:] [quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。[/quote] 肯定不起作用啊,系统只针对“窗体(实际是“顶级窗口”)”设置透明, 不可能给你把窗口中的某个控件“处理透明”的。 所以我之前说你“要把Windows的GDI接口API重写”。 注意这不是其中某一个(就算重写一个,也是个大工程了),而是要重写大部分API。 换句话说:你这个想法在目前的系统下,不是“麻烦”,而是根本就“无路可走”。 如果你的Flash只需要播放,不需要跟Flash进行“交互”, 你可以试试在你的窗体内放一个PictureBox作为容器、把Flash控件放在它里面。 这个“容器”的属性设置是:平面、无边框、禁用。[/quote] 谢谢。也许思路需要换换。 我是想做一个 无边框的窗体,鼠标左键按下去,可以拖动窗体。 主要就是加了一个FLASH填满了整个FORM。 就造成事件无法传递了。[/quote] 你按我给你的方案试过了吗! [/quote] 什麼方案? 你是說鼠標HOOK嗎? 怕360弹提示,使用者以为是病毒。 [/quote] 13楼的方案啊!把 Flash控件放到PictureBox中。 你什么眼神啊,都引用了,还没看一眼? [/quote] 试了,还是不行哈。 ========================= 用TIMER可以了。 timer2.interval = 16 Pivate Sub Timer2_Timer() Dim p As POINTAPI Static posDeltaX As Long Static posDeltaY As Long GetCursorPos p If GetAsyncKeyState(&H1) Then '鼠标左键按下 If posDeltaX = 0 And posDeltaY = 0 Then '--- 计录相对位置 posDeltaX = p.x * 15 - Form1.Left posDeltaY = p.y * 15 - Form1.Top End If Form1.Left = p.x * 15 - posDeltaX Form1.Top = p.y * 15 - posDeltaY Else posDeltaX = 0 posDeltaY = 0 End If End Sub
  • 打赏
  • 举报
回复
发个红包我给你搞定,几句代码,qq2776478814
舉杯邀明月 2016-08-04
  • 打赏
  • 举报
回复
引用 18 楼 jiaxueq 的回复:
[quote=引用 15 楼 Chen8013 的回复:] [quote=引用 14 楼 jiaxueq 的回复:] [quote=引用 13 楼 Chen8013 的回复:] [quote=引用 12 楼 jiaxueq 的回复:] [quote=引用 10 楼 Chen8013 的回复:] [quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。[/quote] 肯定不起作用啊,系统只针对“窗体(实际是“顶级窗口”)”设置透明, 不可能给你把窗口中的某个控件“处理透明”的。 所以我之前说你“要把Windows的GDI接口API重写”。 注意这不是其中某一个(就算重写一个,也是个大工程了),而是要重写大部分API。 换句话说:你这个想法在目前的系统下,不是“麻烦”,而是根本就“无路可走”。 如果你的Flash只需要播放,不需要跟Flash进行“交互”, 你可以试试在你的窗体内放一个PictureBox作为容器、把Flash控件放在它里面。 这个“容器”的属性设置是:平面、无边框、禁用。[/quote] 谢谢。也许思路需要换换。 我是想做一个 无边框的窗体,鼠标左键按下去,可以拖动窗体。 主要就是加了一个FLASH填满了整个FORM。 就造成事件无法传递了。[/quote] 你按我给你的方案试过了吗! [/quote] 什麼方案? 你是說鼠標HOOK嗎? 怕360弹提示,使用者以为是病毒。 [/quote] 13楼的方案啊!把 Flash控件放到PictureBox中。 你什么眼神啊,都引用了,还没看一眼?
jiaxueq 2016-08-04
  • 打赏
  • 举报
回复
引用 17 楼 xiaoyao961 的回复:
是这样的吧,在FLASH左边,右边移动鼠标,能反应不同的XY坐标
timer 中判断 GetAsyncKeyState 是否VK_LBUTTON, 如果按下 getcursorpos 获取鼠标坐标,再计算一下, 移动form 位置? 这思路应该可以了。
jiaxueq 2016-08-04
  • 打赏
  • 举报
回复
引用 16 楼 xiaoyao961 的回复:
如果说FLASH控件只是用来查看不需要操作的话是可以做到的
嗯,只查看,不需要操作。 只是鼠标左键在FLASH任何位置按下,使窗口可以拖动。
jiaxueq 2016-08-04
  • 打赏
  • 举报
回复
引用 15 楼 Chen8013 的回复:
[quote=引用 14 楼 jiaxueq 的回复:] [quote=引用 13 楼 Chen8013 的回复:] [quote=引用 12 楼 jiaxueq 的回复:] [quote=引用 10 楼 Chen8013 的回复:] [quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。[/quote] 肯定不起作用啊,系统只针对“窗体(实际是“顶级窗口”)”设置透明, 不可能给你把窗口中的某个控件“处理透明”的。 所以我之前说你“要把Windows的GDI接口API重写”。 注意这不是其中某一个(就算重写一个,也是个大工程了),而是要重写大部分API。 换句话说:你这个想法在目前的系统下,不是“麻烦”,而是根本就“无路可走”。 如果你的Flash只需要播放,不需要跟Flash进行“交互”, 你可以试试在你的窗体内放一个PictureBox作为容器、把Flash控件放在它里面。 这个“容器”的属性设置是:平面、无边框、禁用。[/quote] 谢谢。也许思路需要换换。 我是想做一个 无边框的窗体,鼠标左键按下去,可以拖动窗体。 主要就是加了一个FLASH填满了整个FORM。 就造成事件无法传递了。[/quote] 你按我给你的方案试过了吗! [/quote] 什麼方案? 你是說鼠標HOOK嗎? 怕360弹提示,使用者以为是病毒。
舉杯邀明月 2016-08-03
  • 打赏
  • 举报
回复
引用 14 楼 jiaxueq 的回复:
[quote=引用 13 楼 Chen8013 的回复:] [quote=引用 12 楼 jiaxueq 的回复:] [quote=引用 10 楼 Chen8013 的回复:] [quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。[/quote] 肯定不起作用啊,系统只针对“窗体(实际是“顶级窗口”)”设置透明, 不可能给你把窗口中的某个控件“处理透明”的。 所以我之前说你“要把Windows的GDI接口API重写”。 注意这不是其中某一个(就算重写一个,也是个大工程了),而是要重写大部分API。 换句话说:你这个想法在目前的系统下,不是“麻烦”,而是根本就“无路可走”。 如果你的Flash只需要播放,不需要跟Flash进行“交互”, 你可以试试在你的窗体内放一个PictureBox作为容器、把Flash控件放在它里面。 这个“容器”的属性设置是:平面、无边框、禁用。[/quote] 谢谢。也许思路需要换换。 我是想做一个 无边框的窗体,鼠标左键按下去,可以拖动窗体。 主要就是加了一个FLASH填满了整个FORM。 就造成事件无法传递了。[/quote] 你按我给你的方案试过了吗!
jiaxueq 2016-08-03
  • 打赏
  • 举报
回复
引用 13 楼 Chen8013 的回复:
[quote=引用 12 楼 jiaxueq 的回复:] [quote=引用 10 楼 Chen8013 的回复:] [quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。[/quote] 肯定不起作用啊,系统只针对“窗体(实际是“顶级窗口”)”设置透明, 不可能给你把窗口中的某个控件“处理透明”的。 所以我之前说你“要把Windows的GDI接口API重写”。 注意这不是其中某一个(就算重写一个,也是个大工程了),而是要重写大部分API。 换句话说:你这个想法在目前的系统下,不是“麻烦”,而是根本就“无路可走”。 如果你的Flash只需要播放,不需要跟Flash进行“交互”, 你可以试试在你的窗体内放一个PictureBox作为容器、把Flash控件放在它里面。 这个“容器”的属性设置是:平面、无边框、禁用。[/quote] 谢谢。也许思路需要换换。 我是想做一个 无边框的窗体,鼠标左键按下去,可以拖动窗体。 主要就是加了一个FLASH填满了整个FORM。 就造成事件无法传递了。
舉杯邀明月 2016-08-01
  • 打赏
  • 举报
回复
引用 12 楼 jiaxueq 的回复:
[quote=引用 10 楼 Chen8013 的回复:] [quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。[/quote] 肯定不起作用啊,系统只针对“窗体(实际是“顶级窗口”)”设置透明, 不可能给你把窗口中的某个控件“处理透明”的。 所以我之前说你“要把Windows的GDI接口API重写”。 注意这不是其中某一个(就算重写一个,也是个大工程了),而是要重写大部分API。 换句话说:你这个想法在目前的系统下,不是“麻烦”,而是根本就“无路可走”。 如果你的Flash只需要播放,不需要跟Flash进行“交互”, 你可以试试在你的窗体内放一个PictureBox作为容器、把Flash控件放在它里面。 这个“容器”的属性设置是:平面、无边框、禁用
jiaxueq 2016-08-01
  • 打赏
  • 举报
回复
引用 10 楼 Chen8013 的回复:
[quote=引用 9 楼 jiaxueq 的回复:] [quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧! [/quote] 这么麻烦啊, 没有现成的API直接可以设置 picturebox 控件的透明度吗? 不过试了 setwindowlong 貌似对picturebox 不起作用。
无·法 2016-07-13
  • 打赏
  • 举报
回复
挡住了当然不行了,如果flash没主动提供这样的处理机制非要强上的话,那么你要填的坑很多很多~ 坐等标准答案
舉杯邀明月 2016-07-12
  • 打赏
  • 举报
回复
引用 9 楼 jiaxueq 的回复:
[quote=引用 5 楼 Chen8013 的回复:] 我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。[/quote] 你要把这个“Picture控件透明搞好”,先把 Windows的GDI接口API重写吧!
jiaxueq 2016-07-12
  • 打赏
  • 举报
回复
引用 5 楼 Chen8013 的回复:
我刚才看了一下,Flash控件不支持鼠标消息。 因此楼上说的“在事件中进行二次调用”肯定行不通了。 依我看,楼主还是进行鼠标底层消息HOOK ,这样有可能解决问题。
在顶层加个picture控件,把Picture的 mousedown 传给 form,就可以了。 但是如何把 Picture控件透明,这个还没搞好。
jiaxueq 2016-07-12
  • 打赏
  • 举报
回复
引用 7 楼 Topc008 的回复:
使用带边框的form或不充满form或进行鼠标拦截........
界面的需求,需要使用 无边框的窗体, 里面嵌入一个FLASH,而且鼠标按下任何位置能移动窗体。 不加FLASH倒是能轻松实现,加了FLASH控件,由于FLASH控件没有鼠标事件,就不好搞了。
一如既往哈 2016-07-11
  • 打赏
  • 举报
回复
看不见的对象,你要它处理鼠标消息有意义吗?
赵4老师 2016-07-11
  • 打赏
  • 举报
回复
将Form的KeyPreview属性设置为True?
一如既往哈 2016-07-11
  • 打赏
  • 举报
回复
使用带边框的form或不充满form或进行鼠标拦截........
加载更多回复(4)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧