VB程序员博客

VB程序开发

我在窗体里面任何一个能右击弹出菜单的地方右击,或者点击出现pop-up菜单而不去选择,这样导致由程序的消息队列一直处于等待状态?是这样的吗?还是其他原因导致的?
我发现这么个问题
我在一个地方一直处于接受中断或者定时器触发的事件而发送的postmessage(),
而我某个地方右击出现菜单后,接受这个消息的事件过程就停止执行了,也就是一直接收postmessage,但是一直没有执行,在等待那个pop-up菜单的消息????
请问怎么解决。。

我的程序也是这样做,不过并没有发现您说的这个问题啊?


有这样一个菜单如下:
文件 分类
    一类
    二类
        大类
        中类
        小类
    三类
        1类
        2类
    四类

其中大中小类在二类菜单级下,1类2类在三类菜单级下,一二三四在分类菜单下
现在需要根据点击率来动态给菜单排序,即在配置文件中记录每个菜单的点击次数,在下次打开时分类主菜单下的子菜单按照点击率由高至低显示,这样每次初始化时都要重新加载菜单,而二类三类位置变化时,它的子菜单也要跟着,请问该怎么写,最好给代码,高手帮忙

菜单中的名称都已经固定,不能修改,好像不能用菜单数组方式了

搞不懂为什么要这么用

要求做成这样的

添加菜单的代码加到Form的Form_Paint事件中,而不是Load事件中。因为修改了窗口菜单,需要重绘才能显示,正好Form_Paint事件可以满足。如果非要写在Load事件中,需要加入一句话:Call DrawMenuBar(Me.hwnd)
声明:Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long


如何获得PopupMenu弹出的菜单的句柄(HMenu)
该菜单在菜单栏上设为隐藏~
用GetMenu和GetSubMenu获取不到,设置成可见才可以获取其Hmenu
怎么样才能获取在菜单栏隐藏的弹出式菜单的HMenu呢?

当然是我自己正在编写的程序本身了,非API,用POPUPMENU弹出的
不知楼上有何高见?

弹出式菜单的HMenu只能由GetSubMenu获取,但隐藏了某些菜单后,GetSubMenu的第二个参数pos相应变小,如不作相应的调整,返回的句柄为0,这并不是隐藏引起的.

现在的问题是GetSubMenu的第一个参数都不知道该填什么……

第一个参数由GetMenu获得
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
Dim ret As Long
Dim vMenuHnd As Long
ret = GetMenu(Me.hwnd)
vMenuHnd = GetSubMenu(ret, 0) '假设有二个菜单,第二个菜单隐藏,求第二菜单的句柄.若不隐藏,第二个参数为1,隐藏就要改为0(少了一个菜单)
MsgBox vMenuHnd
End Sub

上面的"假设有二个菜单,第二个菜单隐藏,求第二菜单的句柄.若不隐藏,第二个参数为1,隐藏就要改为0(少了一个菜单)" 打错了一个字,应为:"假设有二个菜单,第一个菜单隐藏,求第二菜单的句柄.若不隐藏,第二个参数为1,隐藏就要改为0(少了一个菜单)"
实测了一下,若将隐藏,返回值也是0,既使用popupMenu激活,返回也是0,查了一下API说明,0就表示弹出菜单不存在,看来隐藏和不存在是一回了.

汗……我是要得到隐藏的那个菜单的HMenu….

顶~有人知道吗?

哎,我已经有替代方案了

但是这里没有满意答案,

总之时间那么长了,还是结了吧,谢谢各位了


记事本有一菜单项“自动换行”,点击它后前面就多了或少了个对号,这个怎么实现?不要告诉我在click事件中修改菜单名哦,我要正统的办法

谢谢!

学习了

受教了

Private Sub mnuChecked_Click ()
mnuChecked.Checked = Not mnuChecked.Checked
'然后根据 checked 状态写相应的操作代码
End Sub


感觉这问题很简单,但我就是想不通,试了不少次就是试不出来,还请高手解惑ⷂ𗂷
  一个菜单栏,只用菜单编辑器添加了几个菜单,其他的全的全是用数据库添加上去的
问:数据库添加的菜单项的选中事件怎么写???
添加数据库代码:
  rs.Open "select * from tb_menu where jb='sell'", cn, 1, 1
  If rs.RecordCount > 0 Then
  For i = 1 To rs.RecordCount
  i = sell.ubound + 1
  Load sell(i)
  sell(i).Caption = rs.Fields("name")
        If Not rs.EOF Then rs.MoveNext
    Next i
  End If

哦,学习了

果然不难,,谢谢, 以后还有很多问题,还请指教



Set   ABIE.Bands( "txt_dz ").Text   =   WB_1.LocationURL
这样为什么不能传   ABIE   空间内的text_dz文本匡的值??
WB_1.Navigate   ABIE.Tools( "txt_dz ").Text
这样为什么不能得到   这个文本框的值到webbrowser中

ABIE.Bands( "dizhi ").Refresh


请问一下,我要做程序的外观。现在在做菜单部分。菜单栏那里,别人做好了三个图片给我,一个是菜单栏的左边图片,一个是菜单栏的中间图片,一个是菜单栏的右边图片。我现在在用GetWindowDC,然后直接画在上面。我现在要菜单栏的背景色为透明色。那么就可以刚好把菜单的文字透出来了。那么我要如何去做了??我无法办法做成菜单栏的颜色变成透明。可以指明是其它颜色,就是不能指定为透明颜色。请教各位大虾你们是如何做出这个效果的??

这个方法,我也想过。但是由那个是一个图片。是一个渐变的图片(颜色过度的)。那我如何可以画在把那个颜色取出来。而且是各个顶级菜单的颜色都不是一样的。需要每一个都指定一下。如何实现。现在只能统一指定所有顶级菜单的背景颜色是一样的。不能单独每一个顶层菜单都都指定一下。请问那如何解决??我是说顶层菜单,而不是子菜单。

对,差不多就是这个样子。请问如何实现了??

用ToolBar + Rebar实现

可以用API把文字“画”在图片上面,应该就是你要的效果了


如何加入自己建的弹出菜单?
或者修改默认菜单项?

Text1.Enabled = False
Text1.Enabled = True
Text1.SetFocus
PopupMenu 自己的菜单

周一才能尝试,所以只能提问了,谢谢回答

一楼可以说详细些吗?不明白

二楼的我之前试过了,不好用啊,原来的菜单和我自己的交替出现啊?
不过我之前用的没有Text1.SetFocus 这句,有关系吗?

原来是我别的设置有错,二楼的正确,加分


我登录一个系统要根据用户的不同,相应的设置菜单的visible属性  
有如下菜单:  
abcde  
fghij  
….klmno  
为什么我在代码里设置的时候只能设置abcde的visible   属性,而fghij和klmno的visible属性都不能设,在 "form2.fghij. "后,相应的只有count,item等4个属性

会不会呢

因为是菜单数组
form2.fghij(1).visible

谢谢,已解决


专题:

栏目: