Как с помощью API поместить Label на Form?

Материал из DRKB

Как с помощью API поместить Label на Form?[править | править код]

var 
  hLabel: HWND ;
begin
  hLabel := CreateWindow('STATIC', 'test', WS_CHILD or WS_VISIBLE, 0, 0, 200, 40, hWnd, NULL, hInstance, NULL);
end;


Vit Примечание:
Скорее всего последний параметр не "NULL", а "Nil" (NULL в паскале - варианта для обозначения пустого поля в базе данных)


Author: Baa
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 02021



program Project1;

uses
  Windows,
  Messages;

const
  myClassName = 'myWindow';

var
  handleWnd, Label1: THandle;
  WndClass: TWndClass;
  Msg: TMsg;

function WindowProc(Window: HWnd; AMessage, WParam, LParam: Longint): Longint; stdcall;
begin
  WindowProc := DefWindowProc(Window, AMessage, WParam, LParam);
  case AMessage of
    {WM_COMMAND: if lParam = Button1 then
      MessageBox(0, 'Вы нажали кнопку!', 'Информация', MB_OK or MB_ICONINFORMATION); }
    WM_DESTROY: Halt;
  end;
end;

begin
  with WndClass do
  begin
    hInstance := hInstance;
    lpszClassName := myClassName;
    style := cs_hRedraw or cs_vRedraw;
    hbrBackground := color_btnface + 1;
    lpfnWndProc := @WindowProc;
    hCursor := LoadCursor(0, idc_Arrow);
    hIcon := LoadIcon(0, IDI_EXCLAMATION);
    lpszMenuName := NIL;
    cbWndExtra := 0;
    cbClsExtra := 0;
  end;
  RegisterClass(WndClass);
  handleWnd := CreateWindow(myClassName, 'Hажми кнопку', ws_OverlappedWindow,
    400, 300, 200, 100, 0, 0, hInstance , NIL);
  if handleWnd = 0 then
  begin
    MessageBox(0, 'Error', NIL, MB_OK);
    Exit;
  end;
  Label1 := CreateWindow('Label', 'Text', WS_VISIBLE or WS_CHILD or WM_SETTEXT,
    20, 10, 60, 23, handleWnd, 0, hInstance, nil);
  ShowWindow(handleWnd, SW_SHOW);
  UpdateWindow(handleWnd);
  while GetMessage(Msg, handleWnd, 0, 0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end.


Author: alex-co
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 02022