home *** CD-ROM | disk | FTP | other *** search
/ Dan Appleman's Visual Bas…s Guide to the Win32 API / Dan.Applmans.Visual.Basic.5.0.Programmers.Guide.To.The.Win32.API.1997.Ziff-Davis.Press.CD / VB5PG32.mdf / vbpg32 / samples5 / ch10 / menulook.bas next >
Encoding:
BASIC Source File  |  1996-12-08  |  13.2 KB  |  268 lines

  1. Attribute VB_Name = "MENULOOK1"
  2. Option Explicit
  3.  
  4. ' MenuLook sample program
  5. ' Copyright (c) 1992-1997, Desaware
  6.  
  7. '---------------------------------------------------
  8.  
  9. '        Public Constants
  10.  
  11. #If Win32 Then
  12. Type RECT
  13.         Left As Long
  14.         Top As Long
  15.         Right As Long
  16.         Bottom As Long
  17. End Type
  18.  
  19. Type POINTAPI
  20.         x As Long
  21.         y As Long
  22. End Type
  23.  
  24. Type MENUITEMINFO   ' 44 bytes
  25.     cbSize As Long
  26.     fMask As Long
  27.     fType As Long
  28.     fState As Long
  29.     wID As Long
  30.     hSubMenu As Long
  31.     hbmpChecked As Long
  32.     hbmpUnchecked As Long
  33.     dwItemData As Long
  34.     dwTypeData As Long
  35.     cch As Long
  36. End Type
  37.  
  38. Type OSVERSIONINFO
  39.         dwOSVersionInfoSize As Long
  40.         dwMajorVersion As Long
  41.         dwMinorVersion As Long
  42.         dwBuildNumber As Long
  43.         dwPlatformId As Long
  44.         szCSDVersion As String * 128      '  Maintenance string for PSS usage
  45. End Type
  46.  
  47.  
  48. ' Bitmap Header Definition
  49. Type BITMAP
  50.         bmType As Long
  51.         bmWidth As Long
  52.         bmHeight As Long
  53.         bmWidthBytes As Long
  54.         bmPlanes As Integer
  55.         bmBitsPixel As Integer
  56.         bmBits As Long
  57. End Type
  58.  
  59. #Else
  60. Type RECT
  61.         Left As Integer
  62.         Top As Integer
  63.         Right As Integer
  64.         Bottom As Integer
  65. End Type
  66.  
  67. Type POINTAPI
  68.         x As Integer
  69.         y As Integer
  70. End Type
  71.  
  72. '  Bitmap Header Definition
  73. Type BITMAP '14 bytes
  74.     bmType As Integer
  75.     bmWidth As Integer
  76.     bmHeight As Integer
  77.     bmWidthBytes As Integer
  78.     bmPlanes As Byte
  79.     bmBitsPixel As Byte
  80.     bmBits As Long
  81. End Type
  82.  
  83.  
  84. #End If
  85.  
  86. Public Const WM_USER = &H400
  87. Public Const MIIM_CHECKMARKS = &H8
  88. Public Const MIIM_DATA = &H20
  89. Public Const MIIM_ID = &H2
  90. Public Const MIIM_STATE = &H1
  91. Public Const MIIM_SUBMENU = &H4
  92. Public Const MIIM_TYPE = &H10
  93.  
  94. Public Const LB_RESETCONTENT = (WM_USER + 5)
  95. Public Const MF_INSERT = &H0
  96. Public Const MF_CHANGE = &H80
  97. Public Const MF_APPEND = &H100
  98. Public Const MF_DELETE = &H200
  99. Public Const MF_REMOVE = &H1000
  100. Public Const MF_BYCOMMAND = &H0
  101. Public Const MF_BYPOSITION = &H400
  102. Public Const MF_SEPARATOR = &H800
  103. Public Const MF_ENABLED = &H0
  104. Public Const MF_GRAYED = &H1
  105. Public Const MF_DISABLED = &H2
  106. Public Const MF_UNCHECKED = &H0
  107. Public Const MF_CHECKED = &H8
  108. Public Const MF_USECHECKBITMAPS = &H200
  109. Public Const MF_STRING = &H0
  110. Public Const MF_BITMAP = &H4
  111. Public Const MF_OWNERDRAW = &H100
  112. Public Const MF_POPUP = &H10
  113. Public Const MF_MENUBARBREAK = &H20
  114. Public Const MF_MENUBREAK = &H40
  115. Public Const MF_UNHILITE = &H0
  116. Public Const MF_HILITE = &H80
  117. Public Const MF_SYSMENU = &H2000
  118. Public Const MF_RIGHTJUSTIFY = &H4000&
  119. Public Const MF_HELP = &H4000
  120. Public Const MF_MOUSESELECT = &H8000
  121. Public Const MF_END = &H80
  122. Public Const MFS_CHECKED = MF_CHECKED
  123. Public Const MFS_ENABLED = MF_ENABLED
  124. Public Const MFS_GRAYED = &H3&
  125. Public Const MFS_HILITE = MF_HILITE
  126. Public Const MFS_DISABLED = MFS_GRAYED
  127. Public Const MFS_UNCHECKED = MF_UNCHECKED
  128. Public Const MFS_UNHILITE = MF_UNHILITE
  129. Public Const MFT_BITMAP = MF_BITMAP
  130. Public Const MFT_MENUBARBREAK = MF_MENUBARBREAK
  131. Public Const MFT_MENUBREAK = MF_MENUBREAK
  132. Public Const MFT_OWNERDRAW = MF_OWNERDRAW
  133. Public Const MFT_RADIOCHECK = &H200&
  134. Public Const MFT_RIGHTJUSTIFY = MF_RIGHTJUSTIFY
  135. Public Const MFT_RIGHTORDER = &H2000&
  136. Public Const MFT_SEPARATOR = MF_SEPARATOR
  137. Public Const MFT_STRING = MF_STRING
  138. Public Const TPM_LEFTBUTTON = &H0
  139. Public Const TPM_RIGHTBUTTON = &H2
  140. Public Const TPM_LEFTALIGN = &H0
  141. Public Const TPM_CENTERALIGN = &H4
  142. Public Const TPM_RIGHTALIGN = &H8
  143. Public Const TPM_BOTTOMALIGN = &H20&
  144. Public Const TPM_HORIZONTAL = &H0&
  145. Public Const TPM_NONOTIFY = &H80&
  146. Public Const TPM_RETURNCMD = &H100&
  147. Public Const TPM_TOPALIGN = &H0&
  148. Public Const TPM_VCENTERALIGN = &H10&
  149. Public Const TPM_VERTICAL = &H40&
  150.  
  151. Public Const VER_PLATFORM_WIN32s = 0
  152. Public Const VER_PLATFORM_WIN32_WINDOWS = 1
  153. Public Const VER_PLATFORM_WIN32_NT = 2
  154.  
  155. Public Const SRCCOPY = &HCC0020
  156. Public Const SRCPAINT = &HEE0086
  157. Public Const SRCAND = &H8800C6
  158. Public Const SRCINVERT = &H660046
  159. Public Const SRCERASE = &H440328
  160. Public Const NOTSRCCOPY = &H330008
  161. Public Const NOTSRCERASE = &H1100A6
  162. Public Const MERGECOPY = &HC000CA
  163. Public Const MERGEPAINT = &HBB0226
  164. Public Const PATCOPY = &HF00021
  165. Public Const PATPAINT = &HFB0A09
  166. Public Const PATINVERT = &H5A0049
  167. Public Const DSTINVERT = &H550009
  168. Public Const BLACKNESS = &H42&
  169. Public Const WHITENESS = &HFF0062
  170.  
  171. ' Bitmap to use for checkmark on entry one menu
  172.  
  173. ' Port: Convert to longs
  174. Public NewCheck&
  175.  
  176. Public BMHandles&(32)
  177.  
  178. Public FloatBitmap&
  179.  
  180. #If Win32 Then
  181. Declare Function GetLastError Lib "kernel32" () As Long
  182. Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpstring As String) As Long
  183. Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As MENUITEMINFO) As Long
  184. Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  185. Declare Function CreateBitmapIndirect Lib "gdi32" (lpBitmap As BITMAP) As Long
  186. Declare Function LoadMenu Lib "user32" Alias "LoadMenuA" (ByVal hInstance As Long, ByVal lpstring As String) As Long
  187. Declare Function LoadMenuIndirect Lib "user32" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
  188. Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
  189. Declare Function SetMenu Lib "user32" (ByVal hwnd As Long, ByVal hMenu As Long) As Long
  190. Declare Function HiliteMenuItem Lib "user32" (ByVal hwnd As Long, ByVal hMenu As Long, ByVal wIDHiliteItem As Long, ByVal wHilite As Long) As Long
  191. Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpstring As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
  192. Declare Function GetMenuState Lib "user32" (ByVal hMenu As Long, ByVal wID As Long, ByVal wFlags As Long) As Long
  193. Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
  194. Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
  195. Declare Function CreateMenu Lib "user32" () As Long
  196. Declare Function CreatePopupMenu Lib "user32" () As Long
  197. Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
  198. Declare Function CheckMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDCheckItem As Long, ByVal wCheck As Long) As Long
  199. Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
  200. Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  201. Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  202. Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
  203.  
  204. Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Long
  205. Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Long
  206. Declare Function AppendMenuBynum Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Long) As Long
  207. Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpstring As String) As Long
  208. Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
  209. Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
  210. Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
  211. Declare Function GetMenuCheckMarkDimensions Lib "user32" () As Long
  212. 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 RECT) As Long
  213. Declare Function TrackPopupMenuBynum Lib "user32" Alias "TrackPopupMenu" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Long) As Long
  214. Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  215. Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  216. Declare Function ModifyMenuBynum Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpstring As Long) As Long
  217.  
  218. Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
  219. Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  220. Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  221. Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  222. Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  223. Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
  224. Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  225. Declare Function GetMenuContextHelpId Lib "user32" (ByVal hMenu As Long) As Long
  226. Declare Function GetMenuDefaultItem Lib "user32" (ByVal hMenu As Long, ByVal fByPos As Long, ByVal gmdiFlags As Long) As Long
  227. Declare Function SetMenuContextHelpId Lib "user32" (ByVal hMenu As Long, ByVal dw As Long) As Long
  228. Declare Function SetMenuDefaultItem Lib "user32" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPos As Long) As Long
  229. Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Long, lpcMenuItemInfo As MENUITEMINFO) As Long
  230.  
  231.  
  232. #Else
  233. Declare Function GetVersion& Lib "Kernel" ()
  234. Declare Function DeleteDC% Lib "GDI" (ByVal hdc%)
  235. Declare Function BitBlt% Lib "GDI" (ByVal hDestDC%, ByVal x%, ByVal y%, ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal xSrc%, ByVal ySrc%, ByVal dwRop&)
  236. Declare Function SelectObject% Lib "GDI" (ByVal hdc%, ByVal hObject%)
  237. Declare Function CreateCompatibleDC% Lib "GDI" (ByVal hdc%)
  238. Declare Function CreateBitmapIndirect% Lib "GDI" (lpBitmap As BITMAP)
  239. Declare Function GetObjectAPI% Lib "GDI" Alias "GetObject" (ByVal hObject%, ByVal nCount%, lpObject As Any)
  240. Declare Function DeleteObject% Lib "GDI" (ByVal hObject%)
  241. Declare Sub GetCursorPos Lib "User" (lpPoint As POINTAPI)
  242. Declare Function LoadMenu% Lib "User" (ByVal hInstance%, ByVal lpstring$)
  243. Declare Function GetMenu% Lib "User" (ByVal hwnd%)
  244. Declare Function GetMenuCheckMarkDimensions& Lib "User" ()
  245. Declare Function GetMenuItemCount% Lib "User" (ByVal hMenu%)
  246. Declare Function GetMenuItemID% Lib "User" (ByVal hMenu%, ByVal nPos%)
  247. Declare Function GetMenuState% Lib "User" (ByVal hMenu%, ByVal wID%, ByVal wFlags%)
  248. Declare Function GetMenuString% Lib "User" (ByVal hMenu%, ByVal wIDItem%, ByVal lpstring As String, ByVal nMaxCount%, ByVal wFlag%)
  249. Declare Function GetSubMenu% Lib "User" (ByVal hMenu%, ByVal nPos%)
  250. Declare Function GetSystemMenu% Lib "User" (ByVal hwnd%, ByVal bRevert%)
  251. Declare Function HiliteMenuItem% Lib "User" (ByVal hwnd%, ByVal hMenu%, ByVal wIDHiliteItem%, ByVal wHilite%)
  252. Declare Function InsertMenu% Lib "User" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpNewItem As Any)
  253. Declare Function InsertMenuBynum% Lib "User" Alias "InsertMenu" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpNewItem&)
  254. Declare Function InsertMenuBystring% Lib "User" Alias "InsertMenu" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpNewItem$)
  255. Declare Function IsMenu% Lib "User" (ByVal hMenu%)
  256. Declare Function ModifyMenu% Lib "User" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpstring As Any)
  257. Declare Function ModifyMenuBynum% Lib "User" Alias "ModifyMenu" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpstring&)
  258. Declare Function ModifyMenuBystring% Lib "User" Alias "ModifyMenu" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpstring$)
  259. Declare Function RemoveMenu% Lib "User" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%)
  260. Declare Function SetMenu% Lib "User" (ByVal hwnd%, ByVal hMenu%)
  261. Declare Function SetMenuItemBitmaps% Lib "User" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal hBitmapUnchecked%, ByVal hBitmapChecked%)
  262. Declare Function TrackPopupMenu% Lib "User" (ByVal hMenu%, ByVal wFlags%, ByVal x%, ByVal y%, ByVal nReserved%, ByVal hwnd%, lpRect As Any)
  263. Declare Function TrackPopupMenuBynum% Lib "User" Alias "TrackPopupMenu" (ByVal hMenu%, ByVal wFlags%, ByVal x%, ByVal y%, ByVal nReserved%, ByVal hwnd%, ByVal lpRect&)
  264. Declare Function CreateSolidBrush% Lib "GDI" (ByVal crColor&)
  265. Declare Function Rectangle% Lib "GDI" (ByVal hdc%, ByVal X1%, ByVal Y1%, ByVal X2%, ByVal Y2%)
  266.  
  267. #End If
  268.