cSmpMenu.cls
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:3k
源码类别:

浏览器

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cSmpMenu"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. '---------------------------------------------------------------------------------------
  15. ' Module    : cSmpMenu
  16. ' DateTime  : 2005-4-15 13:21
  17. ' Author    : Lingll
  18. ' Purpose   : 方便处理单个menu item 的冬冬
  19. '---------------------------------------------------------------------------------------
  20. Option Explicit
  21. Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
  22. Private Declare Function CheckMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDCheckItem As Long, ByVal wCheck As Long) As Long
  23. Private Declare Function GetMenuState Lib "user32.dll" (ByVal hMenu As Long, ByVal wID As Long, ByVal wFlags As Long) As Long
  24. Private Const MF_CHECKED = &H8&
  25. Private Const MF_ENABLED = &H0&
  26. Private Const MF_GRAYED = &H1&
  27. Private Const MF_UNCHECKED = &H0&
  28. Private Const MF_BYCOMMAND = &H0&
  29. Private Const MF_BYPOSITION = &H400&
  30. Private mByCommand As Boolean
  31. Private mHwnd As Long
  32. Private m_ID As Long
  33. Public Sub Ini(vHwnd&, vId&, vBycommand As Boolean)
  34. mHwnd = vHwnd
  35. m_ID = vId
  36. mByCommand = vBycommand
  37. End Sub
  38. Public Sub ResetId(vId&, vBycommand As Boolean)
  39. m_ID = vId
  40. mByCommand = vBycommand
  41. End Sub
  42. Public Sub ResetHwnd(vHwnd&)
  43. mHwnd = vHwnd
  44. End Sub
  45. Public Sub EnableItem(vTrue As Boolean)
  46. Dim tFlag&
  47. If mByCommand Then
  48.     tFlag = MF_BYCOMMAND
  49. Else
  50.     tFlag = MF_BYPOSITION
  51. End If
  52. If vTrue Then
  53.     tFlag = tFlag Or MF_ENABLED
  54. Else
  55.     tFlag = tFlag Or MF_GRAYED
  56. End If
  57. Call EnableMenuItem(mHwnd, m_ID, tFlag)
  58. End Sub
  59. Public Sub CheckItem(vCheck As Boolean)
  60. Dim tFlag&
  61. If mByCommand Then
  62.     tFlag = MF_BYCOMMAND
  63. Else
  64.     tFlag = MF_BYPOSITION
  65. End If
  66. If vCheck Then
  67.     tFlag = tFlag Or MF_CHECKED
  68. Else
  69.     tFlag = tFlag Or MF_UNCHECKED
  70. End If
  71. Call CheckMenuItem(mHwnd, m_ID, tFlag)
  72. End Sub
  73. '---------------------------------------------------------------------------------------
  74. ' Procedure : GetCheckState
  75. ' DateTime  : 2005-4-15 13:32
  76. ' Author    : Lingll
  77. ' Purpose   : 获得check state
  78. '---------------------------------------------------------------------------------------
  79. Public Function GetCheckState() As Boolean
  80. Dim tFlag&
  81. If mByCommand Then
  82.     tFlag = MF_BYCOMMAND
  83. Else
  84.     tFlag = MF_BYPOSITION
  85. End If
  86. GetCheckState = ((GetMenuState(mHwnd, m_ID, tFlag) And MF_CHECKED) <> 0)
  87. End Function