vb6中动态两级或多级子菜单生成

2024-03-26

朋友们, 告诉我怎么做生成1级以上的子菜单在VB6中运行时?简单解释一下?有什么具体的控制措施吗?但我不想使用外部控件!


您可以使用API​​函数创建多级子菜单

Private Declare Function CreatePopupMenu Lib "user32" () As Long

Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hmenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function TrackPopupMenu Lib "user32" (ByVal hmenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Any) As Long

Private Declare Function DestroyMenu Lib "user32" (ByVal hmenu As Long) As Long

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Dim hmenu As Long, hSubMenu As Long
Private Const MF_STRING = &H0&
Private Const MF_SEPARATOR = &H800&
Private Const MF_POPUP = &H10&

  hSubMenu = CreatePopupMenu
  AppendMenu hSubMenu, 0, 121, "Sub Menu1"
  AppendMenu hSubMenu, 0, 122, "Sub Menu2"
  
  hmenu = CreatePopupMenu
  AppendMenu hmenu, 0, 107, "Menu1"
  
  AppendMenu hmenu, 0, 106, "Menu2"
  
  AppendMenu hmenu, MF_POPUP, hSubMenu, "Menu3"
  AppendMenu hmenu, MF_POPUP, hSubMenu, "Menu4"
  
  AppendMenu hmenu, 0, 101, "Menu5"

显示

  If Button = vbRightButton Then
    Dim P As POINTAPI
    GetCursorPos P
    TrackPopupMenu hmenu, 0, P.X, P.Y, 0, hwnd, 0

菜单不会显示,直到TrackPopupMenu叫做。它的返回值可以指示选择了哪个(如果有)菜单项。例如,如果选择“Menu1”,它可能返回“107”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vb6中动态两级或多级子菜单生成 的相关文章

  • 为应用程序创建自定义 odbc 驱动程序

    好的 我有一个简单的数据库引擎 它是用 vb6 编写的专有产品 用于我的一个应用程序 我想为它创建一个 ODBC 驱动程序 这样我就可以将我的一些其他应用程序 需要数据库 与我的数据库引擎而不是 microsoft sql 他们当前正在使用
  • 将包裹的物品居中放置在弹性盒之间的空间中

    对于导航部分 我希望它使用space between理由 对于导航可能需要换行的较小显示器 我希望这些项目能够自行居中 而不是单独排成一行时粘在左侧 nav display flex width 100 flex flow row wrap
  • 在 VB6 中什么时候必须将变量设置为“Nothing”?

    在我的一个 VB6 表单中 我创建了几个其他 Form 对象并将它们存储在成员变量中 Private m frm1 as MyForm Private m frm2 as MyForm Later Set m frm1 New MyForm
  • 在 Eclipse IDE 上使用 VBA [重复]

    这个问题在这里已经有答案了 可能的重复 有没有便宜或免费的 VB6 编程 IDE https stackoverflow com questions 1766514 any cheap or free ides out there for
  • 从 VB6 和 C# 调用 DLL 给出的双精度结果略有不同

    我在 DLL 中有一个专有库 我没有代码 该库已在 VB6 中使用多年 我正在尝试将VB6代码升级到C 并希望使C 代码完全复制VB6的行为 当从每个环境调用时 我无法使 DLL 中完成的某些计算的双精度结果完全匹配 在 VB6 中 我有类
  • 使用PHP动态添加到.htaccess文件?

    我想做的是自动化网站上线的过程 这些网站都是使用htaccess动态创建的 所以这里是一个例子 RewriteCond ENV REDIRECT STATUS RewriteCond HTTP HOST www domain com NC
  • 如何使用第三方网络服务避免代码重复 - 不使用动态?

    我正在使用第三方网络服务 其所有方法都具有以下签名 SomeResponseClass SomeMethod SomeRequestClass request 每个方法都有自己的请求类和响应类 但是所有请求和所有响应都有一些共同点 每个请求
  • 将动态属性映射读入 Spring 托管 bean

    我有一个像这样的属性文件 my properties file app One id 1 app One val 60 app Two id 5 app Two val 75 我将这些值读入 Spring 配置文件中 bean 的映射属性
  • 为什么尝试使用动态参数调用扩展方法时出现错误 CS1973

    考虑以下代码 internal static class Program public static string ExtensionMethod this string format dynamic args return format
  • 为什么 ASP.NET Dynamic 控件即使添加到 Page_Load 中也能保留 ViewState?

    我做了一些与动态控件和 ViewState 相关的研究 我读到 为了保留动态控件的 ViewState 您必须将其添加到 Page Init 事件中 这是有道理的 因为 PageLifeCycle 是 初始化 加载视图状态 加载回发数据 L
  • 如何从 VB-6 旧应用程序中启动屏幕键盘程序

    我正在尝试从 Windows 10 32 或 Windows 10 64 位计算机上的 VB 6 应用程序中 shell osk exe 过去我们只是简单地使用 Private Sub Command1 Click Dim strTemp
  • VB6 类有析构函数吗?

    当我执行诸如以下的语句时 Set MyObject Nothing 类中是否有一个被调用的特定函数 即我可以用作析构函数 来执行诸如清理数组 与数据库断开连接等操作 类似于Class Initialize 构造函数 还有一个析构函数 Sub
  • VB6 和 .PFX 代码签名

    我的老板已经从 Comodo 获得了证书 而我一直在努力寻找获得证书问题的解决方案intoVB6 应用程序 证书本身是 VB6 格式的 我对这类事情几乎一无所知 Comodo 的人真是太乐于助人了 我的老板说他可以在互联网上找到一些东西 显
  • 在 VB6 应用程序中使用 .NET dll

    我在 c net 中编写了一个 dll 它在应用程序中调用另一个第三方 NET dll 当我使用用 c NET 编写的控制台应用程序以及使用以下代码对其进行测试时 效果很好 Assembly u Assembly LoadFrom dllL
  • 将到期日期作为 TIMESTAMP 列的默认值

    有没有办法将列的默认值设置为过期日期 从CURRENT TIMESTAMP 我已经尝试过 ALTER TABLE table ADD COLUMN expire TIMESTAMP NOT NULL DEFAULT TIMESTAMPADD
  • ReDim 在 VB6 中保留为多维数组

    我正在使用 VB6 我需要做一个ReDim Preserve到多维数组 Dim n m As Integer n 1 m 0 Dim arrCity As String ReDim arrCity n m n n 1 m m 1 ReDim
  • RS 232 中断信号

    我有一个RS232信号捕获设备 而且效果很好 我需要一些帮助来理解数据 基本上我们购买它是因为我们正在处理 80 年代末使用串行通信的机器控制器 尽管知道端口参数 但我们运气不佳 从我转储的数据来看 机器控制正在使用中断信号作为其协议的一部
  • 运行时动态转换

    有没有一种方法可以在运行时动态转换 如以下伪代码 foreach DataRow row in table Rows foreach DataColumn col in table Columns if row col DBNull Val
  • Android 动态添加联系表单

    Hi 我想实现如图所示的表单 不知道他们如何动态添加字段 这是列表视图吗 可扩展列表 用户可以在运行时添加和删除 我已经检查了包含子项目的可扩展列表 但我们在数组中定义子元素 在图像中它们动态添加 任何指南 链接 Thanks Custom
  • 在 C# winforms 的控件内水平和垂直对齐动态添加的控件

    我有这个程序 可以动态添加引用数据库中总统号码的图片框 如何将它们放入组框内并对齐组框内的图片框 如果图片框很多 则组框应该拉伸 我现在有这个代码 private void Form1 Load object sender EventArg

随机推荐

  • 从 std::cout 或 std::ofstream(file) 获取 std::ostream

    我如何绑定std ostream到任一std cout或到一个std ofstream对象 取决于特定的程序条件 尽管由于多种原因这无效 但我希望实现语义上与以下内容等效的东西 std ostream out condition std c
  • 我什么时候应该使用 LRUCache 回收位图?

    我正在使用一个LRUCache缓存存储在文件系统上的位图 我根据这里的示例构建了缓存 http developer android com training displaying bitmaps cache bitmap html http
  • 在 Tkinter 中处理触摸屏手势

    我将如何在 Tkinter 中安装触摸屏手势处理程序 我需要一些特别简单的事情 每当检测到 展开 手势时就增加字体大小 如果 Tcl Tk 没有具体实现的话 这是否可以在 Tkinter 中实现 我想要么窗口管理器向客户端窗口发送一些我可以
  • 如果更改来源不是来自 html,则不会触发 Javascript 事件?

    我试图理解为什么以下示例中的更改事件没有被触发 我将准确显示在哪里 我有一个复选框 我们将其称为 主复选框 选中时 我想检查一些其他相关的复选框 到目前为止有效 此外 当我取消选中相关复选框之一 子复选框 时 我想取消选中 mainChec
  • Android 中流畅的视频擦除

    我正在尝试使用 Android 实现流畅的视频擦除VideoView The seekTo的方法MediaPlayer没有完全按照我想要的方式做 它并不完全寻求我在其中传递的毫秒 它实际上从 跳转到最近的位置 而不是我想要的确切位置 框架也
  • 如何按顺序循环 GET/POST 调用(等待上一个)返回?

    我正在为网页编写 Tampermonkey 脚本 并尝试从其他页面提取数据 我正在尝试创建一个内部有一个循环遍历列表的函数 llcList 并从 ajax 方法 GET 检索数据 但希望等待第一个请求完成后再转到第二个请求 如果我能让它多等
  • 如何找出 Android 中的 GMT 偏移值

    如何找出用户的 GMT 值 例如印度为 05 30 如何在 Android 中计算 05 30 值 我需要这个 因为我在我的应用程序中使用一个java库 它有一个带有这个 05 30字段的函数 我想通过计算生成这个字段 这样我就不必填写国家
  • Visual Studio 2008 中无法识别的标记前缀或设备筛选器

    我有一组 Web 控件 位于网站引用的程序集中 我可以毫无问题地构建和运行所有内容 但是当我查看正在使用控件的 aspx 页面时 我会在标签前缀下方看到一条绿色下划线
  • 删除字符串中多余的空格

    我想使用 VB net 删除多余的空格 ex The Quick Brown Fox 我要输出 The Quick Brown Fox 谢谢 英奇卡 您可以使用一个简单的正则表达式来实现 Dim cleaned As String Rege
  • 如何从传递到 scalatags 的事件处理程序访问“this”元素?

    我正在尝试访问当前的文本 this 元素来自使用 scalatags 创建的事件处理程序 这是我尝试过的 val onChange e HTMLElement gt number e textContent toInt js ThisFun
  • Rails/ActiveRecord 按月+年分组并计数

    我有一张桌子Albums有一个date列名为release date 我想获得所有月份 年份组合的列表以及该月份 年份发行的专辑数量 因此 输出可能类似于 2016 年 11 月 11 2016 年 10 月 4 2016 年 7 月 19
  • DropArea 不会通知有关 onEntered、onExited、onDropped 的操作

    I have Rectangle洋溢着MouseArea其中上onPressAndHold 处理程序透露第二个Rectangle和转账drag对此采取行动Rectangle 问题是当我移动那一秒时Rectangle over DropAre
  • Kendo UI 树视图父节点不带复选框

    什么方法可以实现显示带有复选框的 TreeView 但我不需要父节点的复选框 仅适用于没有子项的 项目 即 我正在显示文件夹结构 但不希望仅针对文件为任何文件夹设置复选框 Thanks 你应该使用使用复选框模板 http docs kend
  • 64 位 Windows 上的 32 位和 64 位互操作性

    是否有讨论 32 位和 64 位进程之间的互操作性的全面权威参考资料 根据谷歌搜索 我推断出 32位DLL只能驻留在32位进程中 64位DLL只能驻留在64位进程中 32位和64位进程只能使用松散耦合的消息系统进行通信 例如网络通信 这意味
  • 按属性名称对 JavaScript 对象进行排序

    我已经寻找了一段时间 想要一种对 Javascript 对象进行排序的方法 如下所示 method artist getInfo artist Green Day format json api key fa3af76b9396d0091c
  • Typescript 抽象属性

    几天前我开始学习打字稿 我知道所有主要的 OOP 概念 但我只是不理解抽象属性背后的概念 我知道您必须在子类中重写 实现基类的抽象成员 但是 它有什么用呢 我了解抽象方法背后的概念 但不是这个 如果您能为我提供一些很好的例子 我将非常感激
  • Scala 逐行调度流响应

    我正在尝试使用 Scala 调度 但既是 Scala 新手 又面对 Dispatch api 符号疯狂的问题 我对如何流式传输大型 http 响应并逐行处理它感到困惑 任何帮助 将不胜感激 干杯 克里斯 Note 这对我不起作用 Http
  • 散点图对数刻度

    在我的代码中 我取两个数据系列的对数并绘制它们 我想通过将 x 轴的每个刻度值提高到 e 次方 自然对数的反对数 来更改它 换句话说 我想绘制两个系列的对数 但 x 轴为水平 这是我正在使用的代码 from pylab import sca
  • 取决于特定项目的公共单元中的条件编译?

    在Delphi XE2中 我有一个单元MyUnit pas由两个不同的项目使用ProjectA and ProjectB MyUnit包含一个声明DoSomething 这是在其他单位实施的程序其他单位 pas 现在我想用条件编译包括DoS
  • vb6中动态两级或多级子菜单生成

    朋友们 告诉我怎么做生成1级以上的子菜单在VB6中运行时 简单解释一下 有什么具体的控制措施吗 但我不想使用外部控件 您可以使用API 函数创建多级子菜单 Private Declare Function CreatePopupMenu L