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

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mMainMenu"
  2. Option Explicit
  3. Public Declare Function LoadMenuIndirect Lib "user32" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
  4. Public Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
  5. Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
  6. Public Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As Long, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
  7. 'Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
  8. Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hWnd As Long, lprc As Any) As Long
  9. Private Declare Function SetMenuInfo Lib "user32.dll" (ByVal hMenu As Long, ByRef LPCMENUINFO As MENUINFO) As Long
  10. Private Declare Function GetMenuInfo Lib "user32.dll" (ByVal hMenu As Long, ByRef LPMENUINFO As MENUINFO) As Long
  11. 'Private Const MNS_NOTIFYBYPOS As Long = &H8000000
  12. 'Private Const MIM_STYLE As Long = &H10
  13. 'Private Type MENUINFO
  14. '  cbSize As Long
  15. '  fMask As Long
  16. '  dwStyle As Long
  17. '  cyMax As Long
  18. '  hbrBack As Long
  19. '  dwContextHelpID As Long
  20. '  dwMenuData As Long
  21. 'End Type
  22. '=============================================
  23. '===== Main Menu ID ==========================
  24. '=============================================
  25. Public Const IDM_Main_File_NewBlank& = 1
  26. Public Const IDM_Main_File_NewNew& = 2
  27. Public Const IDM_Main_File_ClipNew& = 3
  28. Public Const IDM_Main_File_Open& = 4
  29. Public Const IDM_Main_File_SaveAs& = 5
  30. Public Const IDM_Main_File_CloseTab& = 6
  31. Public Const IDM_Main_File_CloseAll& = 7
  32. Public Const IDM_Main_File_ImportFavorite& = 8
  33. Public Const IDM_Main_File_ExportFavorite& = 9
  34. Public Const IDM_Main_File_SavePages& = 10
  35. Public Const IDM_Main_File_LoadPages& = 11
  36. Public Const IDM_Main_File_Offline& = 12
  37. Public Const IDM_Main_File_Exit& = 13
  38. Public Const IDM_Main_View_Toolbar_StdButton& = 14
  39. Public Const IDM_Main_View_Toolbar_Address& = 15
  40. Public Const IDM_Main_View_Toolbar_Searchbar& = 16
  41. Public Const IDM_Main_View_Toolbar_Tabs& = 17
  42. Public Const IDM_Main_View_Toolbar_MinTbr& = 18
  43. Public Const IDM_Main_View_Toolbar_Status& = 19
  44. Public Const IDM_Main_View_Toolbar_Custom& = 20
  45. Public Const IDM_Main_View_Toolbar_Lock& = 21
  46. Public Const IDM_Main_View_SideBand_Favorite& = 84
  47. Public Const IDM_Main_View_FontSize_1& = 22
  48. Public Const IDM_Main_View_FontSize_2& = 23
  49. Public Const IDM_Main_View_FontSize_3& = 24
  50. Public Const IDM_Main_View_FontSize_4& = 25
  51. Public Const IDM_Main_View_FontSize_5& = 26
  52. Public Const IDM_Main_View_Encode_Gb& = 27
  53. Public Const IDM_Main_View_Encode_Big5& = 28
  54. Public Const IDM_Main_View_ViewSource& = 29
  55. Public Const IDM_Main_View_ReloadFavorite& = 30
  56. Public Const IDM_Main_View_Hideme& = 31
  57. Public Const IDM_Main_View_FullScreen& = 32
  58. Public Const IDM_Main_View_PageList& = 33
  59. Public Const IDM_Main_Favorite_Add& = 34
  60. Public Const IDM_Main_Favorite_MoreFavs_Lists& = 35
  61. Public Const IDM_Main_Favorite_MoreFavs_Clear& = 36
  62. Public Const IDM_Main_Favorite_Reopen_List& = 37
  63. Public Const IDM_Main_Favorite_Reopen_More& = 38
  64. Public Const IDM_Main_Tools_Proxy_Config& = 39
  65. Public Const IDM_Main_Tools_Proxy_Nouse& = 40
  66. Public Const IDM_Main_Tools_Proxy_UseieCfg& = 41
  67. Public Const IDM_Main_Tools_Proxy_ProxyList& = 42
  68. Public Const IDM_Main_Tools_OrganizeFav& = 43
  69. Public Const IDM_Main_Tools_Option& = 44
  70. Public Const IDM_Main_Tools_IeOption& = 45
  71. Public Const IDM_Main_Tools_CollectBoard& = 46
  72. Public Const IDM_Main_Tools_Slide& = 47
  73. Public Const IDM_Main_Tabs_DlCtl_Image& = 48
  74. Public Const IDM_Main_Tabs_DlCtl_Music& = 49
  75. Public Const IDM_Main_Tabs_DlCtl_Video& = 50
  76. Public Const IDM_Main_Tabs_DlCtl_Script& = 51
  77. Public Const IDM_Main_Tabs_DlCtl_ActiveX& = 52
  78. Public Const IDM_Main_Tabs_DlCtl_JavaApplet& = 53
  79. Public Const IDM_Main_Tabs_DlCtl_DLActiveX& = 85
  80. Public Const IDM_Main_Tabs_DlCtl_AllOn& = 54
  81. Public Const IDM_Main_Tabs_DlCtl_AllOff& = 55
  82. Public Const IDM_Main_Tabs_NoShowObj& = 56
  83. Public Const IDM_Main_Tabs_NoShowFloat& = 57
  84. Public Const IDM_Main_Tabs_ClearMouseLimit& = 58
  85. Public Const IDM_Main_Tabs_AddFilter& = 59
  86. Public Const IDM_Main_Tabs_PageZoom_60& = 60
  87. Public Const IDM_Main_Tabs_PageZoom_80& = 61
  88. Public Const IDM_Main_Tabs_PageZoom_100& = 62
  89. Public Const IDM_Main_Tabs_PageZoom_120& = 63
  90. Public Const IDM_Main_Tabs_PageZoom_140& = 64
  91. Public Const IDM_Main_Tabs_Script_List& = 65
  92. Public Const IDM_Main_Tabs_Script_Reload& = 66
  93. Public Const IDM_Main_Tabs_Script_ViewFolder& = 67
  94. Public Const IDM_Main_Tabs_HidePage_Hide& = 68
  95. Public Const IDM_Main_Tabs_HidePage_List& = 69
  96. 'document designMode
  97. Public Const IDM_Main_Tabs_designModeOn& = 81
  98. Public Const IDM_Main_Tabs_designModeOff& = 82
  99. Public Const IDM_Main_OuterTools_List& = 70
  100. Public Const IDM_Main_OuterTools_FlashgetDownload& = 71
  101. Public Const IDM_Main_Window_OpenNew& = 72
  102. Public Const IDM_Main_Window_Arrange_c& = 73
  103. Public Const IDM_Main_Window_Arrange_h& = 74
  104. Public Const IDM_Main_Window_Arrange_v& = 75
  105. Public Const IDM_Main_Window_Arrange_a& = 76
  106. Public Const IDM_Main_Help_History& = 77
  107. Public Const IDM_Main_Help_HomePage& = 78
  108. Public Const IDM_Main_Help_Blog& = 83
  109. Public Const IDM_Main_Help_About& = 79
  110. Public Const IDM_Main_Help_Errlog& = 80
  111. '===================================================
  112. '===================================================
  113. Public Const IDM_Main_Pos_File& = 0
  114. Public Const IDM_Main_Pos_View& = 1
  115. Public Const IDM_Main_Pos_Favorite& = 2
  116. 'Public Const IDM_Main_Pos_Group& = 3
  117. Public Const IDM_Main_Pos_Tools& = 3
  118. Public Const IDM_Main_Pos_Tabs& = 4
  119. 'Public Const IDM_Main_Pos_OuterTools& = 5
  120. Public Const IDM_Main_Pos_Plugins& = 5
  121. Public Const IDM_Main_Pos_Windows& = 6
  122. Public Const IDM_Main_Pos_Help& = 7
  123. '==== menu item ==================
  124. Public sMnuItm_Offline As cSmpMenu
  125. Public sMnuItm_Fontsize As cSmpMenu
  126. Public sMnuItm_Encode As cSmpMenu
  127. Public sMnuItm_ViewSource As cSmpMenu
  128. Public sMnuItm_AddFavorite As cSmpMenu
  129. Public sMnuItm_DlCtl As cSmpMenu
  130. Public sMnuItm_NoShowObj As cSmpMenu
  131. Public sMnuItm_NoShowFloat As cSmpMenu
  132. Public sMnuItm_ClearMouseLimit As cSmpMenu
  133. Public sMnuItm_AddFilter As cSmpMenu
  134. Public sMnuItm_PageZoom As cSmpMenu
  135. '===============================
  136. '====== popup menu =========
  137. Public pMnu_ViewToolbar As cPopMenu
  138. Public pMnu_ViewSideBand As cPopMenu
  139.     Public Const IdOffset_ViewSideBand& = 200
  140. Public pMnu_FontSize As cPopMenu
  141. Public pMnu_MoreFavorite As cPopMenu
  142.     Public Const IdOffset_MoreFavorite& = 200
  143. Public pMnu_Reopen As cPopMenu
  144.     Public Const IdOffset_Reopen& = 300
  145. Public pMnu_Proxy As cPopMenu
  146.     Public Const IdOffset_Proxy& = 200
  147. Public pMnu_DlCtl As cPopMenu
  148. 'Public pMnu_Plugin_Scripts As cPopMenu
  149. '    Public Const IdOffset_Plugin_Script& = 200
  150. 'Public pMnu_OuterTools As cPopMenu
  151. '    Public Const IdOffset_OuterTools& = 200
  152. Public pMnu_Windows As cPopMenu
  153.     Public Const IdOffset_Windows& = 200
  154.     
  155. Public pMnu_Plugins As cPopMenu
  156.     Public Const IdOffset_Plugins& = 200
  157. '==============================
  158. 'menu param flag (MENUINFO.dwMenuData)
  159. 'main menu(root) flag
  160. Public Const MenuData_MainMenu As Long = 1
  161. 'favorite menu flag
  162. Public Const MenuData_FavoriteMenu As Long = 2
  163. 'main menu hwnd
  164. Public gHMainMenu As Long
  165. '---------------------------------------------------------------------------------------
  166. ' Procedure : GetMenuTextVb
  167. ' DateTime  : 8/5/2005 12:02
  168. ' Author    : Lingll
  169. ' Purpose   :
  170. '8/5/2005   :strconv 增加使用了 LocaleID参数
  171. '---------------------------------------------------------------------------------------
  172. Public Function GetMenuTextVb(hMenu&, vPos&) As String
  173. Dim tstr() As Byte, tBffSize&
  174. ReDim tstr(255)
  175. tBffSize = GetMenuString(hMenu, vPos, VarPtr(tstr(0)), 255, MF_BYPOSITION)
  176. ReDim Preserve tstr(0 To tBffSize - 1)
  177. GetMenuTextVb = StrConv(tstr, vbUnicode, LocaleID_CurUse)
  178. End Function
  179. Public Sub LoadMainMenu()
  180. 'Dim tArr() As Byte
  181. Dim tcnt&, i&
  182. 'tArr = LoadResData(500, 4)
  183. 'gHMainMenu = LoadMenuIndirect(VarPtr(tArr(0)))
  184. gHMainMenu = LoadMenuVB(500)
  185. tcnt = GetMenuItemCount(gHMainMenu)
  186. For i = 0 To tcnt - 1
  187.     SetMenuPosStyle GetSubMenu(gHMainMenu, i)
  188.     SetMenuParam GetSubMenu(gHMainMenu, i), MenuData_MainMenu
  189. Next i
  190. Call SetSItems
  191. Call SetPopMenus
  192. End Sub
  193. Private Sub SetSItems()
  194. Dim tSub&
  195. '==== file ============
  196. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_File)
  197. Set sMnuItm_Offline = New cSmpMenu
  198. sMnuItm_Offline.Ini tSub, IDM_Main_File_Offline, True
  199. '==== view ===========
  200. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_View)
  201. Set sMnuItm_Fontsize = New cSmpMenu
  202. sMnuItm_Fontsize.Ini tSub, 2, False
  203. '--------
  204. Set sMnuItm_Encode = New cSmpMenu
  205. sMnuItm_Encode.Ini tSub, 3, False
  206. '-----------
  207. Set sMnuItm_ViewSource = New cSmpMenu
  208. sMnuItm_ViewSource.Ini tSub, IDM_Main_View_ViewSource, True
  209. '===== favorite ==========
  210. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Favorite)
  211. Set sMnuItm_AddFavorite = New cSmpMenu
  212. sMnuItm_AddFavorite.Ini tSub, IDM_Main_Favorite_Add, True
  213. '======= tabs ============
  214. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Tabs)
  215. Set sMnuItm_DlCtl = New cSmpMenu
  216. sMnuItm_DlCtl.Ini tSub, 0, False
  217. '--------
  218. Set sMnuItm_NoShowObj = New cSmpMenu
  219. sMnuItm_NoShowObj.Ini tSub, IDM_Main_Tabs_NoShowObj, True
  220. '--------
  221. Set sMnuItm_NoShowFloat = New cSmpMenu
  222. sMnuItm_NoShowFloat.Ini tSub, IDM_Main_Tabs_NoShowFloat, True
  223. '--------
  224. Set sMnuItm_ClearMouseLimit = New cSmpMenu
  225. sMnuItm_ClearMouseLimit.Ini tSub, IDM_Main_Tabs_ClearMouseLimit, True
  226. '---------
  227. Set sMnuItm_AddFilter = New cSmpMenu
  228. sMnuItm_AddFilter.Ini tSub, IDM_Main_Tabs_AddFilter, True
  229. '-----------
  230. Set sMnuItm_PageZoom = New cSmpMenu
  231. sMnuItm_PageZoom.Ini tSub, 5, False
  232. End Sub
  233. Private Sub SetPopMenus()
  234. Dim tSub&
  235. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_View)
  236. Set pMnu_ViewToolbar = New cPopMenu
  237. With pMnu_ViewToolbar
  238.     .Create GetSubMenu(tSub, 0)
  239.     .NODestroy = True
  240.     Call SetMenuPosStyle(.hWnd)
  241. End With
  242. Set pMnu_ViewSideBand = New cPopMenu
  243. With pMnu_ViewSideBand
  244.     .Create GetSubMenu(tSub, 1)
  245.     .NODestroy = True
  246.     Call SetMenuPosStyle(.hWnd)
  247. End With
  248. Set pMnu_FontSize = New cPopMenu
  249. With pMnu_FontSize
  250.     .Create GetSubMenu(tSub, 3)
  251.     .NODestroy = True
  252.     Call SetMenuPosStyle(.hWnd)
  253. End With
  254. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Favorite)
  255. Set pMnu_MoreFavorite = New cPopMenu
  256. With pMnu_MoreFavorite
  257.     .Create GetSubMenu(tSub, 2)
  258.     .NODestroy = True
  259.     Call SetMenuPosStyle(.hWnd)
  260. End With
  261. Set pMnu_Reopen = New cPopMenu
  262. With pMnu_Reopen
  263.     .Create GetSubMenu(tSub, 3)
  264.     .NODestroy = True
  265.     Call SetMenuPosStyle(.hWnd)
  266. End With
  267. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Tools)
  268. Set pMnu_Proxy = New cPopMenu
  269. With pMnu_Proxy
  270.     .Create GetSubMenu(tSub, 0)
  271.     .NODestroy = True
  272.     Call SetMenuPosStyle(.hWnd)
  273. End With
  274. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Tabs)
  275. Set pMnu_DlCtl = New cPopMenu
  276. With pMnu_DlCtl
  277.     .Create GetSubMenu(tSub, 0)
  278.     .NODestroy = True
  279.     Call SetMenuPosStyle(.hWnd)
  280. End With
  281. 'Set pMnu_Plugin_Scripts = New cPopMenu
  282. 'With pMnu_Plugin_Scripts
  283. '    .Create GetSubMenu(tSub, 6)
  284. '    .NODestroy = True
  285. '    'call SetMenuPosStyle(.hwnd)
  286. 'End With
  287. 'tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_OuterTools)
  288. 'Set pMnu_OuterTools = New cPopMenu
  289. 'With pMnu_OuterTools
  290. '    .Create tSub
  291. '    .NODestroy = True
  292. '    Call SetMenuPosStyle(.hwnd)
  293. 'End With
  294. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Windows)
  295. Set pMnu_Windows = New cPopMenu
  296. With pMnu_Windows
  297.     .Create tSub
  298.     .NODestroy = True
  299.     Call SetMenuPosStyle(.hWnd)
  300. End With
  301. tSub = GetSubMenu(gHMainMenu, IDM_Main_Pos_Plugins)
  302. Set pMnu_Plugins = New cPopMenu
  303. With pMnu_Plugins
  304.     .Create tSub
  305.     .NODestroy = True
  306.     Call SetMenuPosStyle(.hWnd)
  307. End With
  308. End Sub
  309. '---------------------------------------------------------------------------------------
  310. ' Procedure : SetMenuPosStyle
  311. ' DateTime  : 2005-??-?? ??:??
  312. ' Author    : Lingll
  313. ' Purpose   : 更改menu style使其能响应wm_menucommand
  314. '---------------------------------------------------------------------------------------
  315. Public Sub SetMenuPosStyle(hMenu&)
  316. Dim tMif As MENUINFO
  317. With tMif
  318.     .cbSize = Len(tMif)
  319.     .fMask = MIM_STYLE
  320. End With
  321. Call GetMenuInfo(hMenu, tMif)
  322. tMif.dwStyle = tMif.dwStyle Or MNS_NOTIFYBYPOS
  323. Call SetMenuInfo(hMenu, tMif)
  324. End Sub
  325. '加载资源文件中的menu,返回menu的hwnd
  326. Public Function LoadMenuVB(id&) As Long
  327. Dim tArr() As Byte
  328. tArr = LoadResData(id, 4)
  329. LoadMenuVB = LoadMenuIndirect(VarPtr(tArr(0)))
  330. End Function