Показать сообщение отдельно
  #5  
Старый 13.05.2014, 19:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

CreateWindowAPI.dpr
Код:
program CreateWindowAPI;

{$R 'CreateWindowAPI.res' 'CreateWindowAPI.rc'}

uses
  Windows, Messages;

var
  AWndClass: WNDCLASS;
  AWnd: HWND;
  AMsg: TMsg;
  bmp: HBITMAP;
  dcbmp: HDC;
  tagbmp: TBitmap;

function WindowProc(AWnd: HWND; Msg: Integer; wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
var
  rct: TRect;
begin
  case Msg of
    WM_ERASEBKGND: begin
      GetClientRect(AWnd, rct);
      SetStretchBltMode(wParam, HALFTONE);
      StretchBlt(wParam, 0, 0, rct.Right, rct.Bottom, dcbmp, 0, 0, tagbmp.bmWidth, tagbmp.bmHeight, SRCCOPY);
      Result:=$ff;
    end;
    WM_CLOSE: begin
      PostQuitMessage(0);
      Result:=0;
    end;
    else Result:=DefWindowProc(AWnd, Msg, wParam, lParam);
  end
end;

begin
  bmp:=LoadBitmap(HInstance, 'bgimage');
  GetObject(bmp, SizeOf(TBitmap), @tagbmp);
  dcbmp:=CreateCompatibleDC(0);
  SelectObject(dcbmp, bmp);

  AWndClass.Style:=CS_HREDRAW or CS_VREDRAW;
  AWndClass.lpfnWndProc:=@WindowProc;
  AWndClass.cbClsExtra:=0;
  AWndClass.cbWndExtra:=0;
  AWndClass.hInstance:=HInstance;
  AWndClass.hIcon:=LoadIcon(HInstance, 'APPICON');
  AWndClass.hCursor:=LoadCursor(0, IDC_ARROW);
  AWndClass.hbrBackground:=HBRUSH(COLOR_INFOBK)+1;
  AWndClass.lpszMenuName:=nil;
  AWndClass.lpszClassName:='TWINAPIFORM';
  RegisterClass(AWndClass);
  AWnd:=CreateWindowEx(
    0,
    AWndClass.lpszClassName,
    'MyWinAPIForm',
    WS_OVERLAPPEDWINDOW or WS_VISIBLE,
    Integer(CW_USEDEFAULT),
    Integer(CW_USEDEFAULT),
    Integer(CW_USEDEFAULT),
    Integer(CW_USEDEFAULT),
    0, 0, HInstance,
    nil);

  CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', 'Edit1',
    WS_CHILD or WS_VISIBLE, 10, 10, 100, 25, AWnd, 0,
    HInstance, nil);
  CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', 'Edit2',
    WS_CHILD or WS_VISIBLE, 10, 40, 100, 25, AWnd, 0,
    HInstance, nil);
  CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', 'Edit3',
    WS_CHILD or WS_VISIBLE, 10, 70, 100, 25, AWnd, 0,
    HInstance, nil);

  while GetMessage(AMsg, 0, 0, 0) do begin
    TranslateMessage(AMsg);
    DispatchMessage(AMsg);
  end;

  DestroyWindow(AWnd);
  UnregisterClass(AWndClass.lpszClassName, HInstance);

  DeleteDC(dcbmp);
  DeleteObject(bmp);
end.
CreateWindowAPI.rc
Код:
bgimage bitmap background.bmp
background.bmp

--

результат SelectObject потом восстановить самому)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием