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

Создание формы на чистом API

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

Создание формы на чистом API

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

// Put this code in your Project file (*.dpr). 
// Den Code in eine Projekt Datei (*.dpr) einfugen. 

program Project1;

 uses
   windows, messages;


 // Main Window Procedure 

function MainWndProc(hWindow: HWND; Msg: UINT; wParam: wParam;
   lParam: lParam): LRESULT; stdcall; export;
 var
   ps: TPaintStruct;
 begin
   Result := 0;
   case Msg of
     WM_PAINT:
       begin
         BeginPaint(hWindow, ps);
         SetBkMode(ps.hdc, TRANSPARENT);
         TextOut(ps.hdc, 10, 10, 'Hello, World!', 13);
         EndPaint(hWindow, ps);
       end;
     WM_DESTROY: PostQuitMessage(0);
     else
       begin
         Result := DefWindowProc(hWindow, Msg, wParam, lParam);
         Exit;
       end;
   end;
 end;

 // Main Procedure 

var
   wc: TWndClass;
   hWindow: HWND;
   Msg: TMsg;
 begin
   wc.lpszClassName := 'YourAppClass';
   wc.lpfnWndProc   := @MainWndProc;
   wc.Style         := CS_VREDRAW or CS_HREDRAW;
   wc.hInstance     := hInstance;
   wc.hIcon         := LoadIcon(0, IDI_APPLICATION);
   wc.hCursor       := LoadCursor(0, IDC_ARROW);
   wc.hbrBackground := (COLOR_WINDOW + 1);
   wc.lpszMenuName  := nil;
   wc.cbClsExtra    := 0;
   wc.cbWndExtra    := 0;
   RegisterClass(wc);
   hWindow := CreateWindowEx(WS_EX_CONTROLPARENT or WS_EX_WINDOWEDGE,
     'YourAppClass',
     'API',
     WS_VISIBLE or WS_CLIPSIBLINGS or
     WS_CLIPCHILDREN or WS_OVERLAPPEDWINDOW,
     CW_USEDEFAULT, 0,
     400, 300,
     0,
     0,
     hInstance,
     nil);

   ShowWindow(hWindow, CmdShow);
   UpDateWindow(hWindow);

   while GetMessage(Msg, 0, 0, 0) do
   begin
     TranslateMessage(Msg);
     DispatchMessage(Msg);
   end;
   Halt(Msg.wParam);
 end.

Перевод контента на русский язык:

Это код на Delphi, который создает окно с помощью Windows API и обрабатывает некоторые основные события, такие как рисование, уничтожение и обработка сообщений.

Вот разбивка того, что каждый часть кода делает:

  1. Функция MainWndProc - это основной процедура окна для созданного этим программой окна. Она обрабатывает различные сообщения окон, включая:
    • WM_PAINT: Рисует окно текстом "Hello, World!".
    • WM_DESTROY: Отправляет сообщение о выходе при уничтожении окна.
    • Любое другое сообщение: Вызывает стандартную процедуру окна для его обработки.
  2. Процедура Main создает класс окна и регистрирует его с помощью функции RegisterClass. Затем она создает экземпляр этого класса, устанавливает заголовок и размер, а затем отображает его на экране с помощью ShowWindow. Наконец, она вступает в цикл обработки сообщений, отправленных операционной системой.

Вот некоторые улучшения, которые можно сделать в этом коде:

  • Вместо жесткого кодирования заголовка и размера окна, рассмотрите возможность их настройки.
  • Добавьте более обширную обработку событий для других типов сообщений (например, кликов мышью, ввода клавиш).
  • Используйте константы вместо магических чисел при определении стиля и размера окон.
  • Рассмотрите возможность использования более надежной цикла обработки сообщений, который лучше обрабатывает ошибки и краевые случаи.

Вот альтернативное решение, использующее более современную версию Delphi (Delphi 2009 или позднее) и компонент TForm:

program TForm1;
uses
  Winapi.Windows, Winapi.Messages;

type
  TMyForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TMyForm;

implementation

{$R *.dfm}

procedure TMyForm.FormCreate(Sender: TObject);
begin
  Caption := 'Hello, World!';
end;

В этом варианте мы создаем класс формы (TMyForm), который наследуется от TForm. Затем мы определяем обработчик события FormCreate, который устанавливает заголовок формы. Наконец, мы создаем экземпляр формы и отображаем ее на экране.

Обратите внимание, что в этом коде не обрабатываются сообщения окон напрямую; вместо этого он зависит от встроенных механизмов обработки сообщений Delphi для обработки событий, таких как рисование и уничтожение.

В статье описывается создание формы на чистом API в Delphi с использованием функции MainWndProc и процедуры Main для отображения окна "Hello, World!".


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:24:33/0.0059099197387695/1