网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> 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
 




本文来源:http://blog.csdn.net/surro/archive/2007/08/22/1754923.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

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

  • 手把手教你做一个简单的VB数…

  • 在delphi7下实现省市县的三级…

  • 利用JBOSS+MyEclipse完成一个…

  • Jsp + servlet +javabean 实…

  • 简单的JSP用户登陆页面

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

  • 一个简单的流量显示程序

  • 一个简单的EJB-Session Bean…

  • [转]简单的Struts文件上传

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