![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |