网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VB编程 >> 文章正文
  鼠标在菜单上移动时显示菜单提示            【字体:
鼠标在菜单上移动时显示菜单提示
作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-26    
 

标  题: 鼠标在菜单上移动时显示菜单提示

' 1. 建立工程, 窗体名: Form1 ==> Label控件, 名称: lblStatus
'                            ==> 建立菜单若干   
 
' 2. 加入一个模块
 
'窗体中代码:
 
Private Sub Form_Load()
    origWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf AppWndProc)
End Sub
 
Private Sub Form_Resize()
    lblstatus.Move 0, ScaleHeight - lblstatus.Height, ScaleWidth
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    SetWindowLong hwnd, GWL_WNDPROC, origWndProc
End Sub
 
'模块中代码:
 
Option Explicit
 
'NOTE: This code MUST go in a standard module.
 
Type MENUITEMINFO
    cbSize As Long
    fMask As Long
    fType As Long
    fState As Long
    wID As Long
    hSubMenu As Long
    hbmpChecked As Long
    hbmpUnchecked As Long
    dwItemData As Long
    dwTypeData As String
    cch As Long
End Type
 
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 Sub CopyMemory Lib "kernel32" Alias _
            "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, _
                             ByVal cbCopy As Long)
 
Public Declare Function GetMenuItemInfo Lib "user32" Alias _
        "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, _
                            ByVal b As Boolean, lpMenuItemInfo As _
                            MENUITEMINFO) 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 Const GWL_WNDPROC = (-4)
Public Const WM_MENUSELECT = &H11F
Public Const MF_SYSMENU = &H2000&
Public Const MIIM_TYPE = &H10
Public Const MIIM_DATA = &H20
Public origWndProc As Long
 
 
Public Function AppWndProc(ByVal hwnd As Long, ByVal Msg _
        As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim iHi As Integer, iLo As Integer
 
Select Case Msg
    Case WM_MENUSELECT
        form1.lblstatus.Caption = ""
        CopyMemory iLo, wParam, 2
        CopyMemory iHi, ByVal VarPtr(wParam) + 2, 2
        If (iHi And MF_SYSMENU) = 0 Then
            Dim m As MENUITEMINFO, aCap As String
            m.dwTypeData = Space$(64)
            m.cbSize = Len(m)
            m.cch = 64
            m.fMask = MIIM_DATA Or MIIM_TYPE
            If GetMenuItemInfo(lParam, CLng(iLo), False, m) Then
                aCap = m.dwTypeData & Chr$(0)
                aCap = Left$(aCap, _
                InStr(aCap, Chr$(0)) - 1)
                form1.lblstatus.Caption = CStr(aCap)
 
'Select Case aCap
 
'Case "&Open": _
'form1.lblstatus.Caption = _
'"Open a file"
'Case "&Save": _
'form1.lblstatus.Caption = _
'"Save a file"
'End Select
             End If
        End If
    End Select
AppWndProc = CallWindowProc(origWndProc, hwnd, Msg, wParam, lParam)
 
End Function 
 
 

站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     如何在ado中使用connect…
     vb 贪吃蛇 单人版游戏 (…
     关于在vb中进行com组件的…
     用vb6.0编写自我升级的程…
     vb自动登陆网络站点详解…
     vb打造超酷个性化菜单(…
  • 在delphi7下实现省市县的三级…

  • web页面上 菜单弹出窗口 动态…

  • Jsp+javascript打造二级…

  • 弹出式菜单的实现

  • 菜单的掠过式提示

  • 在 PowerBuilder 中实现菜单…

  • 菜单枚举记

  • pb用纯函数实现在数据窗口中…

  • 一种简单方便的用户权限管理…

  • 一种简单方便的用户权限管理…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David