VB6环境创建Form2.0窗体怎么添加菜单

KKK56390bar 2016-01-09 09:37:23

如图所示,VB6中创建的Form2.0窗体不能用菜单编辑器创建菜单,怎么样可以方便快捷的为此窗体创建菜单?
...全文
861 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
KKK56390bar 2016-01-30
  • 打赏
  • 举报
回复
引用 11 楼 Chen8013 的回复:
[quote=引用 10 楼 KKK56390bar 的回复:] [quote=引用 9 楼 Chen8013 的回复:] 看模样,这好像是VB6的“标准EXE工程”啊,但那个窗口怎么会在“设计器”中呢? 你这个工程是怎么创建出来的? (或者:你用的IDE是不是跟平常我们用的VB6不一样?)
看标题,这个是引用了Form2.0的窗体,不是VB窗体,也就是跟VBA7.1窗体一样的[/quote] 你这岂不是说得跟没说一样!!! 关键是:通过怎样的操作把这个窗体创建出来? 我只知道有一个“Microsoft Forms 2.0 Object Library”, 但那些只是用于窗体内的控件,并不是“Form 2.0的窗体”。 [/quote] 勾选一下这个Form2.0的设计器就好了,添加窗体的时候选择 Microsoft Forms2.0 Form,只是这个窗体限制比较多,并不适合做大工程
KKK56390bar 2016-01-26
  • 打赏
  • 举报
回复
引用 9 楼 Chen8013 的回复:
看模样,这好像是VB6的“标准EXE工程”啊,但那个窗口怎么会在“设计器”中呢? 你这个工程是怎么创建出来的? (或者:你用的IDE是不是跟平常我们用的VB6不一样?)
看标题,这个是引用了Form2.0的窗体,不是VB窗体,也就是跟VBA7.1窗体一样的
舉杯邀明月 2016-01-26
  • 打赏
  • 举报
回复
看模样,这好像是VB6的“标准EXE工程”啊,但那个窗口怎么会在“设计器”中呢? 你这个工程是怎么创建出来的? (或者:你用的IDE是不是跟平常我们用的VB6不一样?)
舉杯邀明月 2016-01-26
  • 打赏
  • 举报
回复
引用 10 楼 KKK56390bar 的回复:
[quote=引用 9 楼 Chen8013 的回复:] 看模样,这好像是VB6的“标准EXE工程”啊,但那个窗口怎么会在“设计器”中呢? 你这个工程是怎么创建出来的? (或者:你用的IDE是不是跟平常我们用的VB6不一样?)
看标题,这个是引用了Form2.0的窗体,不是VB窗体,也就是跟VBA7.1窗体一样的[/quote] 你这岂不是说得跟没说一样!!! 关键是:通过怎样的操作把这个窗体创建出来? 我只知道有一个“Microsoft Forms 2.0 Object Library”, 但那些只是用于窗体内的控件,并不是“Form 2.0的窗体”。
KKK56390bar 2016-01-25
  • 打赏
  • 举报
回复
引用 6 楼 aspower_ 的回复:
用api函数创建非常麻烦 菜单的创建有三种方法: 1,在WINDOWCLASS中指定菜单资源的标识符; 2,在CreateWindowEx函数参数中指定菜单句柄; 3,先用CreateMenu 然后用 CreatePopupMenu 来新建一个菜单 vb里一般用第三种方法 你看看这个form2.0有没有Mouseup事件 有的话就可以用第三种方法来创建了.
感谢回复 api的方法是有现成的,但是每次去改代码太麻烦了,所以想找找有没有控件或者其他的解决办法,用form20完全是因为里面的控件更人性化很多功能不需要代码来完成,VB本身的form像窗体背景图不能stretch,控件透明化要用api代码来写,只是这个form20原本是为VBA用的,被阉割的太厉害,微软要是行行好把VB7放出来就好了,或者民间高手把VBA71移植成VB环境。
一笑拔剑 2016-01-23
  • 打赏
  • 举报
回复
搜来的代码,可以参考 动态创建菜单,鼠标右键弹出菜单,执行对应鼠标事件 '窗体
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
一笑拔剑 2016-01-23
  • 打赏
  • 举报
回复
用api函数创建非常麻烦 菜单的创建有三种方法: 1,在WINDOWCLASS中指定菜单资源的标识符; 2,在CreateWindowEx函数参数中指定菜单句柄; 3,先用CreateMenu 然后用 CreatePopupMenu 来新建一个菜单 vb里一般用第三种方法 你看看这个form2.0有没有Mouseup事件 有的话就可以用第三种方法来创建了.
KKK56390bar 2016-01-16
  • 打赏
  • 举报
回复
EXCEL里面有人用api实现添加菜单的,但是代码略繁琐。
Tiger_Zhao 2016-01-11
  • 打赏
  • 举报
回复
Form2.0窗体就是没有菜单的,你到 Excel 的 VBA 中添加一个用户窗体,也没有可以添加菜单的地方。
比如要用第三方的菜单控件才行。
KKK56390bar 2016-01-10
  • 打赏
  • 举报
回复
引用 1 楼 Topc008 的回复:
点击窗体后再看看......
普通窗体可以添加,这个是Form2.0窗体类型
KKK56390bar 2016-01-10
  • 打赏
  • 举报
回复
那肯定是点了窗体也不能用菜单编辑器才发帖提问的,这个是引用了Form2.0框架的窗体,虽然很古老,但是对我来说够用,唯一的问题就是这个添加不了顶部菜单。
一如既往哈 2016-01-09
  • 打赏
  • 举报
回复
点击窗体后再看看......

7,763

社区成员

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

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