一个label,用菜单编辑器编一个菜单,当鼠标移到label上时,弹出菜单,鼠标移走,菜单消失,菜单字体大小和颜色要随之改变,请问如何实现?最好能给书示例代码

解决方案 »

  1.   

    我为你的要求感觉到有趣
    ,当鼠标移到label上时,弹出菜单
    /。/。是右键菜单还是其他,你这个要求实在有点好笑
      

  2.   

    当鼠标移到label上时,弹出菜单,这个功能很简单,直接在mousemove里写就行,至于鼠标移走,菜单消失这个功能实现起来相当麻烦,我曾经做过,并且参考过微软的相关技术文章,用label实现“鼠标移走,菜单消失”更是难上加难,因为要实现这个操作必须调用Hook(钩子),而调用Hook必须要用句柄跟踪,label是没有句柄的在弹出菜单的操作前,调用hook跟踪鼠标,因为一旦弹出菜单,窗体事件就会暂停(已经进入菜单消息循环中),用子类(Subclass)的方法都无法检测到鼠标移动的消息,所以只能用hook跟踪鼠标,一旦鼠标移到另一个label中,脱钩Unhook,发送一条消息取消菜单(也可以发送Esc按键消息来取消菜单),然后再弹出下一个菜单很麻烦吧?!!!呵呵
      

  3.   

    in label's mousemove event uses win32 api ptinrect(rect,point) decide the menu will be popuped if can you use popupmenu yourmenu
      

  4.   

    真的相当麻烦,原以为这样就可以:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        mnuPopup.Visible = False
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Me.PopupMenu mnuPopup
    End Sub一试验才知道,弹出菜单后根本不再响应窗体的mouse_move事件,除非你选择或取消了菜单操作
      

  5.   

    看看这里面有没有你想要的。
    ftp://ftp.frontfree.net/Pub/Resource/VB/菜单处理001.rar你的要求我还真见到过,不过是 Coolbar 的例子,不太好找到了。
      

  6.   

    如果让我做的话就用textbox控件代替label来显示(因为textbox有hwnd),菜单就用一个窗口来代替,这样就可以实现楼主的要求.
      

  7.   

    加一个timer控件,鼠标移进进其enabled=true,然后用getcursorpos函数判断是否在label内,不在的话菜单消失
      

  8.   

    偶有个超级苯的办法,楼主不妨试试:
    使用ReleaseCapture这个API,和一个TIMER控件,
    在TIMER事件中每隔一段时间调用ReleaseCapture捕获鼠标的位置,再判断是否在LABEL控件内。呵呵,这么蠢的念头,我自己都不好意思试了(应该是行的,但是那个效率,呵呵)
    楼主权当是听个笑话吧。
      

  9.   

    哎呀,没看到楼上 faib920(飞步) 同志的思路居然和我差不多,罪过罪过,
    偶前面只是说偶自己的念头蠢,没有说你哦,别在意,那时真没看到你的帖子。
    否则我就说我的点子是超级棒了!