Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Компонент через WinApi


Автор: Anarhist 19.4.2007, 20:17
Как создать компонент апишным методом. Допустим что нужно что бы создать компонент Image с указанием имени, размеров и всех остальных атрибутов... По возможности хотелось бы увидеть код... smile 

Автор: Yanis 19.4.2007, 20:37
Больше всего меня поражает «хочу пример». Пример чего? Компонента? Это в раздел работа.
Что тут сложного создаёшь «в уме» TRect и рисуешь в нём када нада.

Автор: Snowy 19.4.2007, 23:07
Что за компонент?
VCL компонент? Или что-то другое подразумевается?

Автор: W4FhLF 20.4.2007, 11:31
Код

{
  Данный код был спроектирован в среде APIx - Visual WinAPI 2
  Copyright (c) PiddleSoft 2004-2006
  http://piddlesoft.narod.ru
  [email protected]

  Дата генерации листинга - 20.04.2007 17:30:57
}

program APIx_Project1;

uses
  windows, messages, commctrl; //Используемые модули

// Иконка
{$R 'icon.res'}

var
  WinClass : TWndClass; //переменная класса TWndClass для создания главного окна
  hInst : HWND; //хандлер приложения
  Handle : HWND; //локальный хандлер
  Msg : TMSG; //сообщение
  Bmp : HBITMAP;
  hFont : HWND; //хандлер шрифта
  Image1 : HWND; //TImage

{$R 'C:\Program Files\APIx 2 - Visual WinAPI\temp\bitmaps.res'}
procedure ShutDown; //процедура завершения программы
begin
  DeleteObject(hFont); //удаление шрифта
  UnRegisterClass('TAPIxForm', hInst); //удаление окна
  ExitProcess(hInst); //закрытие программы
end;

function WindowProc(hwnd, msg, wparam, lparam: longint): longint; stdcall; //обработчик сообщений
begin
  Result := DefWindowProc(hwnd, msg, wparam, lparam);
  case Msg of

  WM_DESTROY: ShutDown;
  end;
end;

begin
hInst := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := CS_PARENTDC; //стиль класса главного окна
   hIcon := LoadIcon(hInst, MAKEINTRESOURCE('APIXICON')); //иконка программы
   lpfnWndProc := @WindowProc; //назначение обработчика сообщений
   hInstance := hInst;
   hbrBackground := COLOR_BTNFACE + 1; //цвет окна
   lpszClassName := 'TAPIxForm'; //класс окна
   hCursor := LoadCursor(0, IDC_ARROW); //активный курсор
  end;
InitCommonControls;
RegisterClass(WinClass); //регистрация класса в системе

// Создание главного окна программы
Handle := CreateWindowEx(0, 'TAPIxForm', 'Форма1',
WS_OVERLAPPEDWINDOW or
WS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU,
219, 116, 550, 366,
0, 0,
hInst, nil);

// Создание шрифта
hFont := CreateFont(
-11, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');

Image1 := CreateWindow(
'Static',
'' ,
WS_CHILD or SS_BITMAP or WS_VISIBLE,
16, 16, 513, 305, Handle, 0, hInst, nil);
SendMessage(Image1, WM_SETFONT, hFont, 0);


  // Цикл сбора сообщений
  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg); //прием сообщений
    DispatchMessage(Msg); //удаление сообщений из очереди
  end;
  end.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)