Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.08.2015, 18:06
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
Вопрос Thumbnail Toolbars RunTime error 216 WinApi

Здравствуйте.

Сделал 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.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025