唉,棘手的菜单问题啊!!!!!

Amoon 2001-11-07 11:56:44
VB工程里有一个窗体,本身是没有菜单的。
我用 CreateMenu 创建了一个菜单
用AppendMenu添加了菜单条目
用SetMenu将菜单分配给窗体
用DrawMenuBar刷新菜单
结果.........窗体上什么也没有!!!!!!!!!
怎么办?同胞们救我啊?(我的头发都快让我扣掉光了!)
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amoon 2001-11-08
  • 打赏
  • 举报
回复
sssoft(恒谦):你有开QQ吗,我们直接说吧?
QQ:80140234
Amoon 2001-11-08
  • 打赏
  • 举报
回复
但是代码如果是在Form_load里还是一样什么都没有啊?:(
sssoft 2001-11-08
  • 打赏
  • 举报
回复
呵呵,api函数中的any数据类型一定要加上byval
Option Explicit
Private Declare Function CreateMenu 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 SetMenu Lib "user32" (ByVal hwnd As Long, ByVal hMenu As Long) As Long

Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Const MF_POPUP = &H10&
Private Const MF_ENABLED = &H0&
Private Const MF_STRING = &H0&
Private Sub Form_Click()
Dim hMenu As Long, rc As Long, hSubMenu As Long
hMenu = CreateMenu
rc = SetMenu(Me.hwnd, hMenu)
rc = AppendMenu(hMenu, MF_POPUP Or MF_ENABLED, hSubMenu, ByVal "do you see me?")
rc = DrawMenuBar(Me.hwnd)
End Sub


Amoon 2001-11-08
  • 打赏
  • 举报
回复
Private Sub Form_Load()
m_hMenu = CreateMenu
MsgBox SetMenu(hwnd, m_hMenu)
MsgBox AppendMenu(m_hMenu, 0, 0, "MenuItem 1")
MsgBox DrawMenuBar(hwnd)
End Sub
所有的结果都是1,说明函数执行是成功了的。可窗体上就是没动静!
Amoon 2001-11-08
  • 打赏
  • 举报
回复
行,给分了!
yangzhaoyu 2001-11-08
  • 打赏
  • 举报
回复
加在Form_load里很简单 ,只要你加入一条 Form1.Show
Private Declare Function CreateMenu 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 SetMenu Lib "user32" (ByVal hwnd As Long, ByVal hMenu As Long) As Long

Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Const MF_POPUP = &H10&
Private Const MF_ENABLED = &H0&
Private Const MF_STRING = &H0&

Private Sub Form_Load()
Dim hMenu As Long, rc As Long, hSubMenu As Long
Form1.Show '(^-^)add it
hMenu = CreateMenu
rc = SetMenu(Me.hwnd, hMenu)
rc = AppendMenu(hMenu, MF_POPUP Or MF_ENABLED, hSubMenu, ByVal "do you see me?")
rc = DrawMenuBar(Me.hwnd)

End Sub
sssoft 2001-11-07
  • 打赏
  • 举报
回复
代码片断贴出来,一下就可以看出,这个过程是没问题的,估计还是什么地方有错

7,763

社区成员

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

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