Тема: Календарь
Показать сообщение отдельно
  #10  
Старый 12.01.2012, 21:35
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kaktuz
Вообщем как я понял WinAPI это использование (ресурсов) компонентов Windows. Таким образом мы не создаем собственную форму, а используем формы Windows что позволяет с экономить размер программы. Но вот тогда получается будет больше возни с кодами, каждый объект нужно вручную создавать, прописывать его свойства и т.д. и т.п.
И все же я не понял как толком создать форму, просто чистую форму для обзора. Может подскажете
1. Дельфи так же использует контролы Windows.
2. Возни с кодом не просто больше, а намного больше.
3. Пример пустой формы:
Код:
Program Test;

uses
  Windows, Messages;

const
  szAppName     = 'test';
  szCaptionName = 'test';

var
  Window        : HWND;
  Msg           : TMsg;
  WndClass      : TWndClassEX;

//---------------------------------------------------------

function MainProc(Wnd : HWND; Msg : Integer; wParam, lParam : Longint): Integer; stdcall;
begin
  Result := 0;

  case Msg of
    WM_CLOSE :
    begin
      DestroyWindow(Wnd);
    end;

    WM_DESTROY :
    begin
      PostQuitMessage(0);
      Exit;
    end;
  end;
  Result := DefWindowProc(Wnd, Msg, wParam, lParam);
end;

//---------------------------------------------------------

begin
  FillChar(WndClass, SizeOf(TWndClassEx), 0);
  WndClass.cbSize        := SizeOf(TWndClassEx);
  WndClass.style         := CS_HREDRAW or CS_VREDRAW;
  WndClass.lpfnWndProc   := @MainProc;
  WndClass.cbClsExtra    := 0;
  WndClass.cbWndExtra    := 0;
  WndClass.hInstance     := hInstance;
  WndClass.hCursor       := LoadCursor(0, IDC_ARROW);
  WndClass.hbrBackGround := GetSysColorBrush(COLOR_BTNFACE);
  WndClass.lpszClassName := szAppName;

  if RegisterClassEx(WndClass) = 0 then
    Halt(255);

  Window := CreateWindowEx(0, szAppName, szCaptionName,
                        WS_OVERLAPPEDWINDOW,
                        0, 0, 800, 600, 0, 0, hInstance, NIL);

  ShowWindow(Window, SW_SHOW);

  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
  Halt(Msg.wParam);
end.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием