Карта сайтаСсылкиКонтакты

Создание окна средствами API

PDF Печать
Статьи

Создание одного окна средствами API.

Окно приложения, созданное при помощи API Windows

program Project1;

uses
  windows, 
  messages;


procedure MainPaint(hWindow: HWND; pt: TPaintStruct);
begin
  SetBkMode(pt.hdc, TRANSPARENT);
  TextOut(pt.hdc, 1, 1, 'Window with API!', 38 );
end;

procedure MainDestroy(hWindow: HWND);
begin
  PostQuitMessage(0);
end;

// Процедура создания главного окна

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);
        MainPaint(hWindow,ps);
      EndPaint( hWindow, ps );
      end;
    WM_DESTROY: MainDestroy(hWindow);
  else begin
    result := DefWindowProc( hWindow, Msg, wParam, lParam );
    exit;
    end;
  end; // case
end;

// Главная процедура

var
  wc: TWndClass;
  hWindow: HWND;
  Msg: TMsg;
begin
  wc.lpszClassName   := 'GenericAppClass';
  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, 
                          'GenericAppClass',
                          '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.

После компиляции этого проекта, исполнимый файл будет весить приблизительно 17KB всего!!!


 

Добавить комментарий


Защитный код
Обновить