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