问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB6+XP环境下,如何使用API函数动态创建菜单?

发布网友 发布时间:2023-07-16 14:50

我来回答

1个回答

热心网友 时间:2023-07-31 09:29

请右击测试效果

动态创建菜单,鼠标右键弹出菜单,执行对应鼠标事件
'窗体
Option Explicit
Private Sub Form_Load()
hMenu = CreateMenu()
hmenupopup = CreatePopupMenu()
result = AppendMenu(hmenupopup, MF_STRING, 300, "新建")
result = AppendMenu(hmenupopup, MF_STRING, 301, "保存")
result = AppendMenu(hmenupopup, MF_STRING, 302, "另存为")
result = AppendMenu(hMenu, MF_POPUP, hmenupopup, "文件")
oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf OnMenu
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim r As RECT
Dim p As POINTAPI
If Button = vbRightButton Then
GetCursorPos p
TrackPopupMenu hmenupopup, 0, p.x, p.y, 0, Me.hWnd, r
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, oldwinproc
End Sub
'模块
Option Explicit

Public Declare Function CreateMenu Lib "user32" () As Long
Public 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
Public 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 RECT) As Long
Public Declare Function CreatePopupMenu Lib "user32" () As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Const MF_STRING = &H0&
Public Const MF_POPUP = &H10&
Public Const WM_USER = &H400
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Type POINTAPI
x As Long
y As Long
End Type
Public Const GWL_WNDPROC = (-4)
Public hMenu As Long
Public hmenupopup As Long
Public result As Long
Public oldwinproc As Long
Public Const WM_COMMAND = &H111

Public Function OnMenu(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg
Case WM_COMMAND
Select Case wParam
Case 300
MsgBox "u select new", vbInformation, "hello, world!"
Case 301
MsgBox "u select save", vbInformation, "hello, world!"
Case 302
MsgBox "u select save as", vbInformation, "hello, world!"
End Select
End Select
OnMenu = CallWindowProc(oldwinproc, hWnd, wMsg, wParam, lParam)
End Function
如何用vb6在xp下使用XP STYLE

动态创建菜单,鼠标右键弹出菜单,执行对应鼠标事件 '窗体 Option Explicit Private Sub Form_Load()hMenu = CreateMenu()hmenupopup = CreatePopupMenu()result = AppendMenu(hmenupopup, MF_STRING, 300, "新建")result = AppendMenu(hmenupopup, MF_STRING, 301, "保存")result = AppendMenu(hmenupop...

怎样使程序中的API函数LoadImage在VB6集成开发环境下调试运行时也能从...

Private Declare Function LoadImage1 Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal...

如何解决下载的一个VB6.0老提示“运行安装程序前,必须首先运行安装向 ...

程序 -> 开始 -> 运行 -> 输入 regedit 然后回车。删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\下面的所有信息。把VisualStudio这个文件夹也一起删。然后再运行setup.exe。Visual Basic 是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类...

请教请教,200分,问哪位大侠知道VB6程序如何隐藏于启动栏?

要先建立菜单如下图片 'Traymenu 主菜单 'menuexit 次菜单 '打开一个新的窗体加上菜单后复制粘贴下面代码即可.Option Explicit Const MAX_TOOLTIP As Integer = 64 Const NIF_ICON = &H2 Const NIF_MESSAGE = &H1 Const NIF_TIP = &H4 Const NIM_ADD = &H0 Const NIM_DELETE = &H2...

高分悬赏!如何将vb6的风格转换为xp风格?满意的话还会加分!

第二种方法就是自己制作需要的风格的控件,不过制作起来相当的麻烦.第三种,就是现在想给您推荐的方案,下载一个eXeScope软件,这个软件是查和改写exe,dll,ocx等资源的一个小工具,假如你写的程序名生成的为123.exe 你就用eXeScope打开它,然后编辑菜单中有个xp样式,选成它,然后确定保存,你的程序就是xp...

在vb6.0里面如何使用api函数是计算机关机?

第一个参数的可用值 uFlags Long,指定下述一个或多个标志(用OR运算符合并到一起)EWX_FORCE 强迫中止没有响应的进程 EWX_LOGOFF 中止进程,然后注销 EWX_SHUTDOWN 关掉系统电源(如果可能的话,ATX电源就可以)EWX_REBOOT 重新引导系统 EWX_SHUTDOWN 关闭系统 第二个参数设置为0 即可。完整的代码...

请问vb6.0中打开exe文件的代码如何编写啊?

还是打开EXE进程?--- 调用外部EXE文件 有两个API 一个是:ShellExecute()一个是:WinExec()--- ShellExecute函数原型及参数含义如下:function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;●hWnd:用于指定父窗口句柄。当函数...

怎样才能在VB6.0 中连接Access 2003数据库

VB6.0的数据库编程方面按其难易程度可分为三类(由易到难);1.使用数据库控制项和绑定控制项 2.使用数据库对象变量进行编程 3.直接调用ODBC2.0API 在使用VB进行数据库编程时,通常,会首先选择三种基本方法之一来进行数据库应用程序的方案设计, 现在就将以上三种设计方法的适应范围及其优缺点进行一个比较...

VB是什么?

通过动态数据交换(DDE)编程技术VB开发应用能和其他Windows应用的间建立数据通信通过动态 链接库技术在VB中可方便地用C语言或汇编语言编写也可Windows应用接口(.API)lO.联机帮助功能 在VB中利用帮助菜单和F1功能键用户可随时方便地得到所需要帮助信息VB帮助窗口中显示了有 已赞过 已踩过< 你对这个回答的评价是? 评...

vb语言的特点

2、无原生支持多线程 Visual Basic 对于多线程无原生支持,只能通过Windows API的调用实现,且极其的不稳定。因为在API创建的线程中,并没有自动初始化运行时库,导致部分的函数无法使用。一般的,在VB6等早期的VB开发环境下,使用API创建线程的目的是完成容易使程序假死的大量数据或者逻辑的计算。3、异常...

vbmid函数的使用方法 VB用什么开发环境 vb常用函数 vb调用函数 vb环境搭建 VB程序开发环境 vb int函数 VBA与VB vb函数大全
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
男生蹲在那里抽烟,女生去拿他的烟说“给我抽一口(女生不会抽烟... 大理附近哪里有网页UI设计培训班哪家比较正规? 苹果手机音乐文件删除了怎样找回来? 天龙八部3如何升级帮派城市 天龙八部帮派怎么才能升到5级。 视神经萎缩能恢复吗 怎么把vivox5max虚电弄没了 在苹果6手机上怎么注册appleid 梦见自己去私人诊所看下身,结果身上没有钱在裤兜里拿出来的都是卫生纸... 梦见两百万变成了卫生纸,该梦何解 用API创建窗口后怎样添加菜单栏啊, VC ...显示的菜单版本已失效。当前生效版本请调用API查看。如何解决... C#+WindowsAPI操纵系统菜单 安阳义乌商贸城营业时间 哈士奇可以在抖音上买吗 求昆明理工大学城市学院高数B2,概率论与数理统计,统计学原理 前几年... 昆明理工大学学分到多少留级 昆明理工大学津桥学院会不会留级啊?我挂了8课 昆明理工大学挂多少学分就留级 昆明理工大学2010级的学生可不可以留级? 昆明理工大学扣多少学分留级 武汉东湖之眼的摩天轮在哪里坐 驾校报名十几天了,怎么还是这样怎么回事? 报名肇庆车管所怎1个月了还没审核通过 学车报名一个多月了没有受理怎么办 报名驾校10天了为什么交管上还是预约科目一 <As Long As You Love Me>的中文翻译和伴奏!!! 驾校报名十天了还没审核 泰安附属医院2022年护士招聘新生护士面识什么时间开始 关国家电网二批湖南网面试通知什么时候开始 血压达到多高要开始用降压药?医生提醒:4个情况不一定需要吃药... 请问广州市白云区石井镇有哪几个派出所 你好,请问一下在广州市白云区石井街道这边那里可以补办身份证,补办身 ... 白云机场至石井派出所有多少公里 广州市白云区石井镇哪些派出所可以办理身份证采集指纹? 已经警告某人不准再来自己家里,这个人还三番五次过来,这种情况怎么办... 如果有村民恶意骚扰我家家庭生活怎么办? 吟诵是介于朗诵和什么之间的一种读书法 瑞银卡使用范围 什么是数据载体 电池技术取得突破会在什么时候?哪一种方向最有可能? 藤椒油和青花椒油的区别 ...借款人所购买住房必须主体结构已封顶,是否正确? 人才房租赁有学位吗 深圳人才房有学位吗 深圳人才房没有学位还能在深圳读书吗 怎样感谢别人帮你投票的话 深圳可售型人才房有学区吗 ...点击保存,但是无法实时自动更新生成的BAK备份文件 请问在matlab中,已经用plot编出了图形,能不能有一段程序让plot编出的...