精易论坛

标题: 如何拦截触发其他菜单消息 [打印本页]

作者: lao4jiadian    时间: 2024-2-28 11:46
标题: 如何拦截触发其他菜单消息

点击菜单1后鼠标右移到菜单2上就会触发菜单2
点击菜单4后鼠标右移到菜单3上就会触发菜单3
触发其他菜单.e (4.59 KB, 下载次数: 12) 如何拦截消息或设置,不触发其他菜单




作者: a2882077    时间: 2024-2-28 12:44
把代码删了不就不触发了,然后设置独立的触发啊
作者: lao4jiadian    时间: 2024-2-28 13:24
a2882077 发表于 2024-2-28 12:44
把代码删了不就不触发了,然后设置独立的触发啊

能否提供一下实现代码
作者: a2882077    时间: 2024-2-28 13:28
删除了就可以了

触发其他菜单.e

4.27 KB, 下载次数: 8, 下载积分: 精币 -2 枚


作者: lao4jiadian    时间: 2024-2-28 14:18
a2882077 发表于 2024-2-28 13:28
删除了就可以了

哈哈,我的点击顶级菜单运行,点击顶级菜单停止就没有了。肯定不行啊
作者: a2882077    时间: 2024-2-28 14:30
lao4jiadian 发表于 2024-2-28 14:18
哈哈,我的点击顶级菜单运行,点击顶级菜单停止就没有了。肯定不行啊

可视、操作打勾不就出来了吗?
作者: xintian    时间: 2024-2-28 15:38
没看明白你要表达的是啥,个人理解你写的不就是实现了吗.
作者: lao4jiadian    时间: 2024-3-1 18:05
VB-TEST.rar (6.86 KB, 下载次数: 0) 这个是VB源码的窗口,易友帮忙用易语言实现一下。它的主菜单可以实现1楼功能。

作者: lao4jiadian    时间: 2024-3-1 18:06
a2882077 发表于 2024-2-28 13:28
删除了就可以了

看看能不能实现8楼VB代码的窗口菜单。

补充内容 (2024-3-1 18:21):
11楼VB代码
作者: lao4jiadian    时间: 2024-3-1 18:07
xintian 发表于 2024-2-28 15:38
没看明白你要表达的是啥,个人理解你写的不就是实现了吗.

帮忙看看能不能实现8楼VB代码的窗口菜单。

补充内容 (2024-3-1 18:21):
11楼VB代码
作者: lao4jiadian    时间: 2024-3-1 18:19
lao4jiadian 发表于 2024-3-1 18:05
这个是VB源码的窗口,易友帮忙用易语言实现一下。它的主菜单可以实现1楼功能。
...

VB-TEST.rar (6.21 KB, 下载次数: 0) 最简化VB代码




补充内容 (2024-3-1 18:35):
Private Const GWL_STYLE = (-16)
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const WS_MAXIMIZEBOX = &H10000
Private Const SW_SHOWMAXIMIZED = 3
Private Const WS_CAPTION = &HC00000                  '  WS_BORDER Or WS_DLGFRAME
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_OVERLAPPED = &H0&
Private Const WS_TILED = WS_OVERLAPPED
Private Const WS_SYSMENU = &H80000
Private Const WS_THICKFRAME = &H40000
Private Const WS_MAXIMIZE = &H1000000

Dim bModelFileFound As Boolean
Dim bMinstate As Boolean

Private Sub MDIForm_Load()
  
Correct:
    Dim lStyle As Long
    lStyle = WS_CAPTION Or WS_MINIMIZEBOX Or WS_SYSMENU Or WS_OVERLAPPED Or SW_SHOWMAXIMIZED Or SWP_NOSIZE
    lStyle = SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)

End Sub

补充内容 (2024-3-1 18:49):
Private Const GWL_STYLE = (-16)                      '这是什么意思
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1                       'SWP_NOSIZE:维持当前尺寸(忽略cx和Cy参数)。
Private Const WS_MAXIMIZEBOX = &H10000               'WS_MAXIMIZEBOX 用于创建具有最大按钮的窗口。
Private Const SW_SHOWMAXIMIZED = 3                   'SW_SHOWMAXIMIZED,激活窗口并以最大化的形式显示
Private Const WS_CAPTION = &HC00000                  'WS_CAPTION 用于创建具有标题栏的窗口(即表示 WS_BORDER 样式)。 不能与 WS_DLGFRAME 样式一起使用。
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_OVERLAPPED = &H0&                   'WS_OVERLAPPED 用于创建重叠的窗口。 重叠窗口通常包含一个标题和一个边框。
Private Const WS_TILED = WS_OVERLAPPED
Private Const WS_SYSMENU = &H80000                    'WS_SYSMENU 用于创建标题栏中具有控件菜单框的窗口。 仅用于带有标题栏的窗口。
Private Const WS_THICKFRAME = &H40000
Private Const WS_MAXIMIZE = &H1000000

Private Sub MDIForm_Load()
  
Correct:
    Dim lStyle As Long
    lStyle = WS_CAPTION Or WS_MINIMIZEBOX Or WS_SYSMENU Or WS_OVERLAPPED Or SW_SHOWMAXIMIZED Or SWP_NOSIZE
    lStyle = SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)

End Sub

补充内容 (2024-3-1 18:58):
MDI窗口??




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4