powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / При запуске exe-файла ошибка
11 сообщений из 11, страница 1 из 1
При запуске exe-файла ошибка
    #32620036
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дизайнере код работает нормально (жмешь F5 и все работет без ошибок), а запускаешь exe-файл - ошибка Windows:
Код: plaintext
Инструкция по адресу "0x717d9a26" обратиласть к памяти по адресу "0x00000024". Память не может быть "Read".
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32620139
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гробовое молчание.
Если надо код, так скажите. Даже укажу строку из-за которой выходит ошибка.
Первый раз с такой ошибкой сталкиваюсь. Если-бы знал выход, то не спрашивал бы.
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32620159
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно суббота :). Неприемный день, потому и тишина.
Код конечно нужно. Вероятно апишка валится?


Magnus
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32620210
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Посылаю сообщение SendMessage.
Код:

Код: plaintext
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

Код: plaintext
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
Вываливается на строке:
Код: plaintext
Call SendMessage(ByVal lHwndToolBar, ByVal TB_SETBUTTONINFO, ByVal  0 , ByVal strBoutton)
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32620349
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал ByVal при передаче параметров SendMessage и все OK. strBoutton.cchText задавать вообще не надо. При первоначальном добавлении текста к кнопке он игнорирутеся.
Ошибка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim strBoutton As TBBUTTONINFO
        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)
Нет ошибки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim iButton As Long
    Dim strBoutton As TBBUTTONINFO
        iButton =  0 
        strBoutton.cbSize = LenB(strBoutton)
        strBoutton.dwMask = TBIF_SIZE Or TBIF_TEXT
        strBoutton.cx =  80 
        strBoutton.pszText = "Назад"
        Call SendMessage(lHwndToolBar, TB_SETBUTTONINFO, iButton, strBoutton)
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32620418
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все верно. Структуры всегд апередаются по ссылке. Т.е ты вместо самой структуры передавал значение ссылки на нее, т.к. обьявление гласит As Long.
Во втором случае как и нужно передается ссылка на структуру.


Magnus
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32621722
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, объявление у него гласит Any, но это все равно не меняют сути, передавать конечно нужно ссылку на структуру.

Ну и еще маленькй такой штришок:
Если пишешь ByVal 0, то пишу уже полностью ByVal 0&, & - скажет компилятору что значение "0" нужно привести к типу Long при передачи в API функцию.
Хотя конечно в твоем случае это не обязательно, потому что при Declare функции ты описал этот параметр как - ..., ByVal wParam As Long,.... так что можно было и просто "0" писать, компилятор все равно все сделал, но вообще, писать ByVal 0& является хорошим тоном, потому что страхует тебя от всяких трудноуловимых ошибок. Сам так один раз попал. Была функция с Decalre lParam As Any - и нужно было туда "0" передать, ByVal я написал, а амперсанд пожалел, привык что всегда при декларации функций ByVal a as Long и можно опускать эти необязательные ключевые слова, а тут Any..... потом целый день пытался понять почему до окна мое сообщение не доходит, хотя функция отрабатывала безо всяких сбоев, достаточно было токо боавить "&", чтобы все стало на свои места
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32621862
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, объявление у него гласит Any
Ну да, чего это я :). Хотя сути действительно не меняет.



Вообще с АПИ нужно осторожно и очень внимательно работать. Как уже высказался предыдущий оратор, очень часто бывают трудноуловимые баги из за невнимательности в мелочах.

Magnus
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32832972
tarazu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно ли на VB додать тулбар(кнопку) в другое приложение? Если да, то как это сделать?
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32833381
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TB_INSERTBUTTON


TB_INSERTBUTTON
wParam = (WPARAM) iButton;
lParam = (LPARAM) (LPTBBUTTON) lpButton;

Inserts a button in a toolbar.

Returns TRUE if successful, or FALSE otherwise.
iButton
Zero-based index of a button. The message inserts the new button to the left of this button.
lpButton
Address of a TBBUTTON structure containing information about the button to insert.
...
Рейтинг: 0 / 0
При запуске exe-файла ошибка
    #32834167
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB Watch Protector
Он обработает код, скомпилирует и далее и смотриш в какой строке ошибка. В нём есть несколько режимов обработки ошибок. В данном случае подходит первый.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / При запуске exe-файла ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]