![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Здравствуйте.
Сделал Thumbnail Toolbars. Кнопки появились. Но стоит завершить работу приложения, вылезает Runtime error 216 at 00407fd0. Что делать, естественно, не знаю. Код:
unit Unit1; interface uses Windows, Messages, ShlObj, ActiveX; Procedure WinMain; var WndClassEx : TWndClassEx; Form : HWND; MMsg: Msg; tbCreated : Cardinal; pButtons : array[0..3] of TThumbButton; tb : iTaskBarList4; implementation procedure InitTaskBar; var z:integer; begin CoCreateInstance(CLSID_TaskbarList, nil, CLSCTX_ALL, iTaskBarList4,tb); for z in [0..3] do begin pButtons[z].iId := z; pButtons[z].iBitmap := z; pButtons[z].dwMask := THB_BITMAP + THB_TOOLTIP; end; pButtons[0].szTip := '1'; pButtons[1].szTip := '2'; pButtons[2].szTip := '3'; pButtons[3].szTip := '4'; // tb.ThumbBarSetImageList(Form, ImgList); tb.ThumbBarAddButtons(Form, length(pButtons), @pButtons); tb.SetProgressValue(Form, 50, 100); end; Function WinProc(Wnd: HWND; Msg : UINT; WParam : WPARAM; LParam: LPARAM): lresult; Stdcall; Begin Result := 0; Case Msg Of WM_CREATE: tbCreated := RegisterWindowMessage('TaskbarButtonCreated'); WM_CLOSE: DestroyWindow(Wnd); WM_DESTROY: PostQuitMessage(0); Else Result := DefWindowProc(Wnd, Msg, WParam, LParam); End; if msg = tbCreated then InitTaskBar; End; Procedure WinMain; Begin FillChar(WndClassEx, SizeOf(TWndClassEx), 0); WndClassEx.cbSize := SizeOf(TWndClassEx); WndClassEx.lpszClassName := 'APIWindow'; WndClassEx.style := CS_HREDRAW Or CS_VREDRAW; WndClassEx.hInstance := HInstance; WndClassEx.lpfnWndProc := @WinProc; WndClassEx.cbClsExtra := 0; WndClassEx.cbWndExtra := 0; WndClassEx.hIcon := LoadIcon(HInstance, MakeIntResource('MAINICON')); WndClassEx.hIconSm := LoadIcon(HInstance, MakeIntResource('MAINICON')); WndClassEx.hCursor := LoadCursor(0, IDC_ARROW); WndClassEx.hbrBackground := GetStockObject(LTGRAY_BRUSH); WndClassEx.lpszMenuName := NIL; If RegisterClassEx(WndClassEx) <> 0 Then Begin Form := CreateWindowEx(0, WndClassEx.lpszClassName, '123',WS_CLIPCHILDREN or WS_OVERLAPPEDWINDOW, (GetSystemMetrics(SM_CXSCREEN) - 500) div 2, (GetSystemMetrics(SM_CYSCREEN) - 500) div 2, 500, 500, 0, 0, HInstance, NIL); If Form = 0 Then MessageBox (0, 'Окно1 не создалось!', 'Ошибка', MB_OK Or MB_ICONHAND) Else Begin ShowWindow(Form, SW_SHOWNORMAL); While GetMessage(MMsg, 0, 0, 0) Do Begin TranslateMessage(MMsg); DispatchMessage(MMsg); End; Halt(MMsg.WParam); End; End Else MessageBox(0, 'Невозможно зарегистрировать класс окна1', 'Ошибка', MB_OK Or MB_ICONHAND); End; end. Что не так сделал или не доделал? Последний раз редактировалось Stalker2-42, 29.08.2015 в 18:20. |
#2
|
||||
|
||||
![]() Ну подскажите пожалуйста.
Неужели все все равно или так трудно помочь(хотя бы направить)? СПАСИБО!!! |
#3
|
||||
|
||||
![]() Цитата:
Так может произойти, например, при установке некорректного значения какого-либо дескриптора, и последующей попытке освобождения ресурсов, связанных с этим дескриптором. Если выдаётся внешний код ошибки вместо исключительной ситуации, то можно попробовать подключить модуль SysUtils, который попытается преобразовать код ошибки в ИС какого-либо класса. Может быть, ИС будет более информативна. P.S.: есть ведь всезнающий Google. Если он ничего не выдает, значит Вы не так спрашиваете. Код чей, свой или скопированный? Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#4
|
||||
|
||||
![]() Цитата:
Скопирован. И так же читал на сайте микрософта. там не совсем понятно что делать при завершение работы + язык С. Пишу с телефона. Ссылку не могу дать. Комп пришлось разобрать. И ещё, если использовать библиотеку bass.DLL (динамическая загрузка), при её наличие в папке с проектом - все нормально. Если удаль её, при завершение работы - error 216. |
#5
|
||||
|
||||
![]() У автослесарюг есть такое правило: открутил гайку - помни, её потом ещё и закручивать, в смысле что-то создаёте, а убивать забываете
Насчёт динамической загрузки, если ошибка вылетает, значит у вас библиотика всёже статикой подрубается, покажите код пжлст Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
||||
|
||||
![]() реализовал свой вариант, все работает отлично, никаких ошибок в конце не возникает
Пишу программы за еду. __________________ |
#7
|
||||
|
||||
![]() Цитата:
Здравствуйте. В справке я так и не понял как "убивать". Код в архиве вместе с DLL(Динам. загрузка). https://yadi.sk/d/jB76xkAJkQzQ9 Цитата:
На VCL и уменя работает, а на API нет. Последний раз редактировалось Stalker2-42, 12.11.2015 в 20:43. |