Да. Посылаю сообщение SendMessage.
Код:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344.
Option Explicit
' **************************** API-функции ****************************
Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
'Public Declare Function CreateToolbarEx Lib "comctl32" (ByVal hWndParent As Long, ByVal dwStyle As Long, ByVal wID As Long, ByVal nBitmaps As Long, ByVal hBMInst As Long, ByVal wBMID As Long, lpButtons As TBBUTTON, ByVal iNumButtons As Long, ByVal dxButton As Long, ByVal dyButton As Long, ByVal dxBitmap As Long, ByVal dyBitmap As Long, ByVal uStructSize As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow 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 UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Sub InitCommonControls Lib "comctl32" ()
Public Declare Function InitCommonControlsEx Lib "comctl32" (init As INITCOMMONCONTROLSEXTYPE) As Boolean
'Public Declare Function LoadString Lib "user32" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long
' ************************ Константы для user32.dll ************************
' * комманды функции ShowWindow()
Public Const SW_HIDE As Integer = 0
Public Const SW_SHOWNORMAL As Integer = 1
Public Const SW_NORMAL As Integer = 1
Public Const SW_SHOWMINIMIZED As Integer = 2
Public Const SW_SHOWMAXIMIZED As Integer = 3
Public Const SW_MAXIMIZE As Integer = 3
Public Const SW_SHOWNOACTIVATE As Integer = 4
Public Const SW_SHOW As Integer = 5
Public Const SW_MINIMIZE As Integer = 6
Public Const SW_SHOWMINNOACTIVE As Integer = 7
Public Const SW_SHOWNA As Integer = 8
Public Const SW_RESTORE As Integer = 9
Public Const SW_SHOWDEFAULT As Integer = 10
Public Const SW_FORCEMINIMIZE As Integer = 11
Public Const SW_MAX As Integer = 11
' * идентификаторы для WM_SHOWWINDOW message
Public Const SW_PARENTCLOSING As Integer = 1
Public Const SW_OTHERZOOM As Integer = 2
Public Const SW_PARENTOPENING As Integer = 3
Public Const SW_OTHERUNZOOM As Integer = 4
' * комманды функции AnimateWindow()
Public Const AW_HOR_POSITIVE As Integer = &H1
Public Const AW_HOR_NEGATIVE As Integer = &H2
Public Const AW_VER_POSITIVE As Integer = &H4
Public Const AW_VER_NEGATIVE As Integer = &H8
Public Const AW_CENTER As Integer = &H10
Public Const AW_HIDE As Long = &H10000
Public Const AW_ACTIVATE As Long = &H20000
Public Const AW_SLIDE As Long = &H40000
Public Const AW_BLEND As Long = &H80000
' * стили окна(Window Styles)
Public Const WS_OVERLAPPED As Long = &H0
Public Const WS_POPUP As Long = &H80000000
Public Const WS_CHILD As Long = &H40000000
Public Const WS_MINIMIZE As Long = &H20000000
Public Const WS_VISIBLE As Long = &H10000000
Public Const WS_DISABLED As Long = &H8000000
Public Const WS_CLIPSIBLINGS As Long = &H4000000
Public Const WS_CLIPCHILDREN As Long = &H2000000
Public Const WS_MAXIMIZE As Long = &H1000000
Public Const WS_CAPTION As Long = &HC00000 '%af_src_comm_0
Public Const WS_BORDER As Long = &H800000
Public Const WS_DLGFRAME As Long = &H400000
Public Const WS_VSCROLL As Long = &H200000
Public Const WS_HSCROLL As Long = &H100000
Public Const WS_SYSMENU As Long = &H80000
Public Const WS_THICKFRAME As Long = &H40000
Public Const WS_GROUP As Long = &H20000
Public Const WS_TABSTOP As Long = &H10000
Public Const WS_MINIMIZEBOX As Long = &H20000
Public Const WS_MAXIMIZEBOX As Long = &H10000
Public Const WS_TILED As Long = WS_OVERLAPPED
Public Const WS_ICONIC As Long = WS_MINIMIZE
Public Const WS_SIZEBOX As Long = WS_THICKFRAME
' * стандартные слити окна (Common Window Styles)
Public Const WS_OVERLAPPEDWINDOW As Long = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or _
WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
Public Const WS_TILEDWINDOW As Long = WS_OVERLAPPEDWINDOW
Public Const WS_POPUPWINDOW As Long = WS_POPUP Or WS_BORDER Or WS_SYSMENU
Public Const WS_CHILDWINDOW As Long = WS_CHILD
' * Дополнительные слити окна (Extended Window Styles)
Public Const WS_EX_DLGMODALFRAME As Long = &H1
Public Const WS_EX_NOPARENTNOTIFY As Long = &H4
Public Const WS_EX_TOPMOST As Long = &H8
Public Const WS_EX_ACCEPTFILES As Long = &H10
Public Const WS_EX_TRANSPARENT As Long = &H20
Public Const WS_EX_MDICHILD As Long = &H40
Public Const WS_EX_TOOLWINDOW As Long = &H80
Public Const WS_EX_WINDOWEDGE As Long = &H100
Public Const WS_EX_CLIENTEDGE As Long = &H200
Public Const WS_EX_CONTEXTHELP As Long = &H400
Public Const WS_EX_RIGHT As Long = &H1000
Public Const WS_EX_LEFT As Long = &H0
Public Const WS_EX_RTLREADING As Long = &H2000
Public Const WS_EX_LTRREADING As Long = &H0
Public Const WS_EX_LEFTSCROLLBAR As Long = &H4000
Public Const WS_EX_RIGHTSCROLLBAR As Long = &H0
Public Const WS_EX_CONTROLPARENT As Long = &H10000
Public Const WS_EX_STATICEDGE As Long = &H20000
Public Const WS_EX_APPWINDOW As Long = &H40000
Public Const WS_EX_OVERLAPPEDWINDOW As Long = WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE
Public Const WS_EX_PALETTEWINDOW As Long = WS_EX_WINDOWEDGE Or WS_EX_TOOLWINDOW Or WS_EX_TOPMOST
' ************************ Константы для comctl32.dll ************************
' * комманды функции и структура данных InitCommonControlsEx()
Public Type INITCOMMONCONTROLSEXTYPE
dwSize As Long
dwICC As Long
End Type
Public Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
' ====== COMMON CONTROL STYLES (общие стили для элементов управления) ===============================
Public Const WM_USER As Integer = &H400
Public Const CCS_TOP As Long = &H1
Public Const CCS_NOMOVEY As Long = &H2
Public Const CCS_BOTTOM As Long = &H3
Public Const CCS_NORESIZE As Long = &H4
Public Const CCS_NOPARENTALIGN As Long = &H8
Public Const CCS_ADJUSTABLE As Long = &H20
Public Const CCS_NODIVIDER As Long = &H40
Public Const CCS_VERT As Long = &H80
Public Const CCS_LEFT As Long = CCS_VERT Or CCS_TOP
Public Const CCS_RIGHT As Long = CCS_VERT Or CCS_BOTTOM
Public Const CCS_NOMOVEX As Long = CCS_VERT Or CCS_NOMOVEY
' ======================== cтили и флаги для элемента управления ToolBar) ===============================
Public Const TOOLBARCLASSNAME As String = "ToolbarWindow32"
Public Const ICC_BAR_CLASSES As Long = &H4 ' // toolbar, statusbar, trackbar, tooltips
' * структура кнопки ToolBar
Public Type TBBUTTON
iBitmap As Long ' номер кнопки (нумерация начинается с нуля), для разделителя в этом поле
' следует указать нулевое значение
idCommand As Long ' идентификатор, который будет передаваться родительскому окну с сообщением
' WM_COMMAND, когда пользователь нажмет соответствующую кнопку, если элемент
' массива структур TBBUTTON описывает разделитель группы кнопок, в поле idCommand
' вам нужно записать нулевое значение
fsState As Byte ' флаг исходного состояния кнопки
'
fsStyle As Byte ' стиль кнопки
'
dwData As Long ' дополнительные данные, которые будут хранится в описании кнопки и использо-
' ваться при необходимости. Вы можете записать в это поле нулевое значение
'
iString As Long ' номер текстовой строки, которую необходимо написать на поверхности кнопки.
' Для добавления таких строк к внутреннему списку Toolbar необходимо послать
' сообщение TB_ADDSTRING , передав вместе с ним адрес буфера с текстовыми строками.
' Все строки в этом буфере должны быть закрыты двоичным нулем, а последняя - двумя
' двоичными нулями. Если текстовые строки не используются, в поле iString следует
' записать нулевой значение
End Type
' * сообщения для ToolBar
Public Const TB_ENABLEBUTTON As Integer = WM_USER + 1
Public Const TB_CHECKBUTTON As Integer = WM_USER + 2
Public Const TB_HIDEBUTTON As Integer = WM_USER + 4
Public Const TB_ISBUTTONENABLED As Integer = WM_USER + 9
Public Const TB_ISBUTTONCHECKED As Integer = WM_USER + 10
Public Const TB_ISBUTTONHIDDEN As Integer = WM_USER + 12
Public Const TB_ADDBITMAP As Integer = WM_USER + 19
Public Const TB_ADDBUTTONS As Long = WM_USER + 20
Public Const TB_GETBUTTON As Integer = WM_USER + 23
Public Const TB_DELETEBUTTON As Integer = WM_USER + 22
Public Const TB_BUTTONCOUNT As Integer = WM_USER + 24
Public Const TB_COMMANDTOINDEX As Integer = WM_USER + 25
Public Const TB_BUTTONSTRUCTSIZE As Long = WM_USER + 30
Public Const TB_AUTOSIZE As Long = WM_USER + 33
Public Const TB_SETBUTTONSIZE As Long = WM_USER + 31
Public Const TB_SETTOOLTIPS As Integer = WM_USER + 36
Public Const TB_CHANGEBITMAP As Integer = WM_USER + 43
Public Const TB_GETBITMAP As Integer = WM_USER + 44
Public Const TB_GETBUTTONTEXT As Integer = WM_USER + 45
Public Const TB_GETRECT As Integer = WM_USER + 51
Public Const TB_GETBUTTONINFO As Integer = WM_USER + 65
Public Const TB_SETBUTTONINFO As Integer = WM_USER + 66
Public Const TB_GETHOTITEM As Integer = WM_USER + 71
Public Const TB_SETHOTITEM As Integer = WM_USER + 72
Public Const TB_SETEXTENDEDSTYLE As Long = WM_USER + 84
' * стили ToolBar
Public Const TBSTYLE_FLAT As Long = &H800
Public Const TBSTYLE_REGISTERDROP As Long = &H4000
Public Const TBSTYLE_EX_DRAWDDARROWS As Long = &H1
Public Const TBSTYLE_TOOLTIPS As Long = &H100
Public Const TBSTYLE_WRAPABLE As Long = &H200
Public Const TBSTYLE_ALTDRAG As Long = &H400
Public Const TBSTYLE_LIST As Long = &H1000
Public Const TBSTYLE_CUSTOMERASE As Long = &H2000
Public Const TBSTYLE_TRANSPARENT As Long = &H8000
' * флаги исходного состояния кнопок ToolBar:
Public Const TBSTATE_ENABLED As Integer = 4 ' кнопка находится в разблокированном состоянии
Public Const TBSTATE_CHECKED As Integer = 1 ' кнопка изображается в нажатом состоянии, этот флаг
' используется для кнопок с фиксацией
Public Const TBSTATE_HIDDEN As Integer = 8 ' скрытая кнопка, не отображается
Public Const TBSTATE_INDETERMINATE As Integer = 16 ' кнопка отображается серым цветом
Public Const TBSTATE_PRESSED As Integer = 2 ' кнопка изображается в нажатом состоянии
Public Const TBSTATE_WRAP As Integer = 32 ' кнопки, расположенные после той, что имеет флаг
' TBSTATE_WRAP, отображаются на новой строке. Таким образом,
' вы можете создать многострочный Toolbar . Этот флаг можно
' указывать только тогда, когда установлен флаг TBSTATE_ENABLED
' * стили кнопок ToolBar:
Public Const TBSTYLE_BUTTON As Integer = 0 ' стандартная кнопка
Public Const TBSTYLE_CHECK As Integer = 2 ' кнопка с фиксацией. Эта кнопка "залипает", когда пользователь
' нажимает на нее. Для того чтобы вернуть кнопку в исходное
' состояние, необходимо нажать на нее еще раз
Public Const TBSTYLE_CHECKGROUP As Integer = 6 ' кнопка с фиксацией, которая остается нажатой до тех пор,
' пока нажата другая кнопка из этой же группы
Public Const TBSTYLE_GROUP As Integer = 4 ' стандартная кнопка, которая остается нажатой до тех пор,
' пока нажата другая кнопка из этой же группы
Public Const TBSTYLE_SEP As Integer = 1 ' разделитель между группами кнопок
Public Const TBSTYLE_DROPDOWN As Integer = 8 ' кнопка со списком
' * структура toolbar buttons info
Public Type TBBUTTONINFO
cbSize As Long
dwMask As Long
idCommand As Long
iImage As Long
fState As Byte
fStyle As Byte
cx As Integer
lParam As Long
pszText As String
cchText As Long
End Type
'* флаги для toolbar buttons info
Public Const TBIF_COMMAND As Byte = &H20
Public Const TBIF_IMAGE As Byte = &H1
Public Const TBIF_LPARAM As Byte = &H10
Public Const TBIF_SIZE As Byte = &H40
Public Const TBIF_STATE As Byte = &H4
Public Const TBIF_STYLE As Byte = &H8
Public Const TBIF_TEXT As Byte = &H2
' ======================== cтили и флаги для элемента управления ReBar(CoolBar) ===============================
Public Const REBARCLASSNAME As String = "ReBarWindow32"
Public Const ICC_COOL_CLASSES As Long = &H400 '// rebar (coolbar) control
Public Const RBIM_IMAGELIST As Long = &H1
Public Const RBS_TOOLTIPS As Long = &H100 ' не поддерживается
Public Const RBS_VARHEIGHT As Long = &H200 ' выравнивает полсы(Band) по высоте
Public Const RBS_BANDBORDERS As Long = &H400 ' выводит разделитель полос(Bands)
Public Const RBS_FIXEDORDER As Long = &H800 ' фиксированный порядок полос(Bands)
Public Const RBS_REGISTERDROP As Long = &H1000 '
Public Const RBS_AUTOSIZE As Long = &H2000 ' автоматический размер полос(Bands)
Public Const RBS_VERTICALGRIPPER As Long = &H4000 ' this always has the vertical gripper (default for horizontal mode)
Public Const RBS_DBLCLKTOGGLE As Long = &H8000 ' свертывание полсы двойным щелчком(default is single-clicks)
Public Const RBBS_BREAK As Integer = &H1 ' перенос на новую строку
Public Const RBBS_FIXEDSIZE As Integer = &H2 ' полоса(Band) фиксировнного размера
Public Const RBBS_CHILDEDGE As Integer = &H4 ' edge around top & bottom of child window
Public Const RBBS_HIDDEN As Integer = &H8 ' не показывать
Public Const RBBS_NOVERT As Integer = &H10 '// don't show when vertical
Public Const RBBS_FIXEDBMP As Integer = &H20 '// bitmap doesn't move during band resize
Public Const RBBS_VARIABLEHEIGHT As Integer = &H40 '// allow autosizing of this child vertically
Public Const RBBS_GRIPPERALWAYS As Integer = &H80 '// always show the gripper
Public Const RBBS_NOGRIPPER As Integer = &H100 '// never show the gripper
Public Const RBBIM_STYLE As Integer = &H1
Public Const RBBIM_COLORS As Integer = &H2
Public Const RBBIM_TEXT As Integer = &H4
Public Const RBBIM_IMAGE As Integer = &H8
Public Const RBBIM_CHILD As Integer = &H10
Public Const RBBIM_CHILDSIZE As Integer = &H20
Public Const RBBIM_SIZE As Integer = &H40
Public Const RBBIM_BACKGROUND As Integer = &H80
Public Const RBBIM_ID As Integer = &H100
Public Const RBBIM_IDEALSIZE As Integer = &H200
Public Const RBBIM_LPARAM As Integer = &H400
Public Const RBBIM_HEADERSIZE As Integer = &H800 '// control the size of the header
' * сообщения для ReBar
Public Const RB_INSERTBAND As Long = (WM_USER + 10)
Public Const RB_DELETEBAND As Long = (WM_USER + 2)
Public Const RB_GETBARINFO As Long = (WM_USER + 3)
Public Const RB_SETBARINFO As Long = (WM_USER + 4)
Public Const RB_SETBANDINFOA As Long = (WM_USER + 6)
Public Const RB_SETPARENT As Long = (WM_USER + 7)
Public Const RB_HITTEST As Long = (WM_USER + 8)
Public Const RB_GETRECT As Long = (WM_USER + 9)
Public Const RB_INSERTBANDW As Long = (WM_USER + 10)
Public Const RB_SETBANDINFOW As Long = (WM_USER + 11)
Public Const RB_GETBANDCOUNT As Long = (WM_USER + 12)
Public Const RB_GETROWCOUNT As Long = (WM_USER + 13)
Public Const RB_GETROWHEIGHT As Long = (WM_USER + 14)
Public Const RB_IDTOINDEX As Long = (WM_USER + 16) '// wParam == id
Public Const RB_GETTOOLTIPS As Long = (WM_USER + 17 )
Public Const RB_SETTOOLTIPS As Long = (WM_USER + 18 )
Public Const RB_SETBKCOLOR As Long = (WM_USER + 19 ) '// sets the default BK color
Public Const RB_GETBKCOLOR As Long = (WM_USER + 20) '// defaults to CLR_NONE
Public Const RB_SETTEXTCOLOR As Long = (WM_USER + 21 )
Public Const RB_GETTEXTCOLOR As Long = (WM_USER + 22 ) '// defaults to &H00000000
Public Const RB_SIZETORECT As Long = (WM_USER + 23) '// resize the rebar/break bands and such to this rect (lparam)
'Public Const RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME '// lParam is color scheme
'Public Const RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME '// fills in COLORSCHEME pointed to by lParam
' * структура ReBar
Public Type REBARINFO
cbSize As Long
fMask As Long
himl As Long
End Type
' * структура полос(Bands) ReBar
Public Type REBARBANDINFO
cbSize As Long
fMask As Long
fStyle As Long
clrFore As Long
clrBack As Long
lpText As String
UINT As Long
iImage As Integer
hwndChild As Long
cxMinChild As Long
cyMinChild As Long
cx As Long
hbmBack As Long
wID As Long
cyChild As Long
cyMaxChild As Long
cyIntegral As Long
cxIdeal As Long
lParam As Long
cxHeader As Long
End Type
Public Function MakeLong(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long
'Creates a Long value using Low and High integers
'Useful when converting code from C++
MakeLong = CLng(LoWord)
Call CopyMemory(ByVal VarPtr(MakeLong) + 2 , HiWord, 2 )
End Function
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85.
Option Explicit
Private lHwndReBar, lHwndToolBar As Long
Private Sub Form_Load()
Dim aTbBottons( 1 To 3 ) As TBBUTTON, strBoutton As TBBUTTONINFO
Dim ICCT As INITCOMMONCONTROLSEXTYPE
Dim oReBar As REBARINFO, oBand As REBARBANDINFO
'Dim sError As String * 500
'Dim lErrNum As Long
'Dim lErrMsg As Long
'Dim LastSystemError As String
aTbBottons( 1 ).iBitmap = 0
aTbBottons( 1 ).idCommand = 0
aTbBottons( 1 ).fsState = TBSTATE_ENABLED
aTbBottons( 1 ).fsStyle = TBSTYLE_DROPDOWN
aTbBottons( 1 ).dwData = 0
aTbBottons( 1 ).iString = 0
aTbBottons( 2 ).iBitmap = 1
aTbBottons( 2 ).idCommand = 1
aTbBottons( 2 ).fsState = TBSTATE_ENABLED
aTbBottons( 2 ).fsStyle = TBSTYLE_BUTTON
aTbBottons( 2 ).dwData = 0
aTbBottons( 2 ).iString = 1
aTbBottons( 3 ).iBitmap = 2
aTbBottons( 3 ).idCommand = 2
aTbBottons( 3 ).fsState = TBSTATE_ENABLED
aTbBottons( 3 ).fsStyle = TBSTYLE_BUTTON
aTbBottons( 3 ).dwData = 0
aTbBottons( 3 ).iString = 2
oReBar.cbSize = LenB(oReBar)
oReBar.fMask = 0
oReBar.himl = 0
oBand.cbSize = LenB(oBand)
oBand.fMask = RBBIM_TEXT Or RBBIM_BACKGROUND Or RBBIM_STYLE Or RBBIM_CHILD Or RBBIM_CHILDSIZE Or RBBIM_SIZE
oBand.fStyle = RBBS_CHILDEDGE Or RBBS_FIXEDBMP
' Registers specific common control ReBar and ToolBar classes from the common control dynamic-link library (DLL)
ICCT.dwICC = ICC_COOL_CLASSES Or ICC_BAR_CLASSES
ICCT.dwSize = LenB(ICCT)
Call InitCommonControlsEx(ICCT)
' окно ReBar
lHwndReBar = CreateWindowEx(ByVal WS_EX_TOOLWINDOW, ByVal REBARCLASSNAME$, ByVal &O0, ByVal WS_CHILD Or _
WS_CLIPSIBLINGS Or WS_CLIPCHILDREN Or RBS_VARHEIGHT Or CCS_NODIVIDER Or RBS_BANDBORDERS Or _
RBS_AUTOSIZE Or RBS_REGISTERDROP Or WS_BORDER, ByVal 0 , ByVal 0 , ByVal 0 , ByVal 0 , ByVal Me.hwnd, ByVal 0 &, ByVal App.hInstance, _
ByVal 0 &)
Call SendMessage(ByVal lHwndReBar, RB_SETBARINFO, 0 , LenB(oReBar))
Call ShowWindow(ByVal lHwndReBar, ByVal SW_SHOW)
Call UpdateWindow(ByVal lHwndReBar)
' окно ToolBar
lHwndToolBar = CreateWindowEx(ByVal WS_EX_TOOLWINDOW, ByVal TOOLBARCLASSNAME$, ByVal &O0, ByVal WS_CHILD Or _
CCS_ADJUSTABLE Or TBSTYLE_FLAT Or TBSTYLE_LIST Or TBSTYLE_TOOLTIPS, ByVal 0, ByVal 0, ByVal 0, _
ByVal 0, ByVal Me.hwnd, 0&, ByVal App.hInstance, ByVal 0&)
Call SendMessage(ByVal lHwndToolBar, ByVal TB_SETBUTTONSIZE, ByVal 0&, ByVal MakeLong(30, 30))
Call SendMessage(ByVal lHwndToolBar, ByVal TB_SETEXTENDEDSTYLE, ByVal 0&, ByVal TBSTYLE_EX_DRAWDDARROWS)
Call SendMessage(ByVal lHwndToolBar, ByVal TB_BUTTONSTRUCTSIZE, ByVal LenB(aTbBottons(1 Or 3)), ByVal 0&)
Call SendMessage(ByVal lHwndToolBar, ByVal TB_ADDBUTTONS, 3, aTbBottons(1))
Call SendMessage(ByVal lHwndToolBar, ByVal TB_AUTOSIZE, ByVal 0&, ByVal 0&)
Call ShowWindow(ByVal lHwndToolBar, ByVal SW_SHOWNORMAL)
Call UpdateWindow(ByVal lHwndToolBar)
strBoutton.dwMask = TBIF_TEXT Or TBIF_SIZE
strBoutton.cbSize = LenB(strBoutton)
strBoutton.pszText = StrConv("Назад", vbFromUnicode)
strBoutton.cchText = LenB(strBoutton.pszText)
strBoutton.cx = 80
Call SendMessage(ByVal lHwndToolBar, ByVal TB_SETBUTTONINFO, ByVal 0, ByVal strBoutton)
oBand.hwndChild = lHwndToolBar
oBand.cxMinChild = 0
oBand.cx = 0
oBand.cyMinChild = 30
Call SendMessage(lHwndReBar, RB_INSERTBAND, -1, oBand)
' lErrNum = GetLastError
' lErrMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, lErrNum, 0, sError, Len(sError), 0)
' LastSystemError = Trim(sError)
' Debug.Print LastSystemError
End Sub
Вываливается на строке:
Call SendMessage(ByVal lHwndToolBar, ByVal TB_SETBUTTONINFO, ByVal 0 , ByVal strBoutton)
|