Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Построение формы на чистом API

Delphi , Синтаксис , API реализация

Построение формы на чистом API


Cемь сходств Президента РФ и WINDOWS:
1) Работают, но постоянно глючат.
2) Никто не знает, чего от них ожидать.
3) Никому не нравятся, но вынуждены терпеть.
4) Никто не знает смысл их сообщений.
5) Имеют друзей по имени Билл.
6) Смена версий прошла в 2000 году.
7) Оба имеют кнопку "Пуск" (у одного в чемодане, у второго на рабочем столе).


program PlainAPI;

uses
  Windows,
  Messages;

{$R *.res}

function PlainWinProc (hWnd: THandle; nMsg: UINT;
  wParam, lParam: Cardinal): Cardinal; export; stdcall;
var
  hdc: THandle;
  ps: TPaintStruct;
begin
  Result := 0;
  case nMsg of
    wm_lButtonDown:
      MessageBox (hWnd, 'Mouse Clicked',
        'Plain API', MB_OK);
    wm_Paint:
    begin
      hdc := BeginPaint (hWnd, ps);
      Ellipse (hdc, 100, 100, 300, 300);
      EndPaint (hWnd, ps);
    end;
    wm_Destroy:
      PostQuitMessage (0);
    else
      Result := DefWindowProc (hWnd, nMsg, wParam, lParam);
  end;
end;

procedure WinMain;
var
  hWnd: THandle;
  Msg: TMsg;
  WndClassEx: TWndClassEx;
begin
  // initialize the window class structure
  WndClassEx.cbSize := sizeOf (TWndClassEx);
  WndClassEx.lpszClassName := 'PlainWindow';
  WndClassEx.style := cs_VRedraw or cs_HRedraw;
  WndClassEx.hInstance := HInstance;
  WndClassEx.lpfnWndProc := @PlainWinProc;
  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 (white_Brush);
  WndClassEx.lpszMenuName := nil;
  // register the class
  if RegisterClassEx (WndClassEx) = 0 then
    MessageBox (0, 'Invalid class registration',
      'Plain API', MB_OK)
  else
  begin
    hWnd := CreateWindowEx (
      ws_Ex_OverlappedWindow, // extended styles
      WndClassEx.lpszClassName, // class name
      'Plain API Demo', // title
      ws_OverlappedWindow, // styles
      cw_UseDefault, 0, // position
      cw_UseDefault, 0, // size
      0, // parent window
      0, // menu
      HInstance, // instance handle
      nil); // initial parameters
    if hWnd = 0 then
      MessageBox (0, 'Window not created',
        'Plain API', MB_OK)
    else
    begin
      ShowWindow (hWnd, sw_ShowNormal);
      while GetMessage (Msg, 0, 0, 0) do
      begin
        TranslateMessage (Msg);
        DispatchMessage (Msg);
      end;
    end;
  end;
end;

begin
  WinMain;
end.

Загрузить исходный код проекта

Программа Delphi, созданная с использованием Plain API (Windows API) и отображающая эллипс в окне. В проекте также есть процедура для обработки кликов мыши и уничтожения окна.

Вот разбивка кода:

  1. Программа PlainAPI использует модули Windows и Messages, которые обеспечивают доступ к Windows API и функциональности обработки сообщений.
  2. Функция PlainWinProc является основной процедурой окна, которая обрабатывает полученные сообщения:
    • Для WM_ LBUTTONDOWN она отображает сообщение о том, что была нажата кнопка мыши.
    • Для WM_PAINT она рисует эллипс на окне с помощью функции Ellipse.
    • Для WM_DESTROY она отправляет сообщение об остановке приложения.
  3. Процедура WinMain инициализирует структуру класса окна и зарегистрирует ее в операционной системе. Она также создает экземпляр окна с помощью функции CreateWindowEx и отображает его на экране.
  4. Процедура WinMain затем вступает в цикл обработки сообщений, где она получает и обрабатывает отправленные сообщения о окне с помощью функций GetMessage, TranslateMessage и DispatchMessage.

Код хорошо организован и легко понятен, с ясными именами переменных и краткими комментариями. Однако есть несколько предложений по улучшению:

  1. Консистентность именования: код использует оба стиля именования (PascalCase и camelCase) для переменных. Лучше использовать один стиль в проекте.
  2. Комментарии и документация: хотя код имеет некоторые комментарии, он может выгодно улучшиться с более подробными объяснениями каждого раздела.
  3. Обработка ошибок: код не обрабатывает ошибки или исключения явно. Рекомендуется добавить блоки try-catch или механизмы обработки ошибок для улучшения надежности.

В целом, это хороший старт для создания простого приложения Windows с использованием Plain API. С некоторыми улучшениями и дополнительными функциями он может стать более полноценным и полезным программой.

Публикация статьи, посвященной созданию формы на чистом API с использованием языка программирования Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: API реализация ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 00:59:50/0.0032901763916016/0