Как сделать родительское окно с фоновым рисунком в клиентской области в Delphi?

Для того чтобы сделать это выполните следующие шаги:

  1. Создайте новый проект.
  2. Установите FormStyle формы в fsMDIForm
  3. Разместите Image на форме и загрузите в него картинку.
  4. Найдите { Private Declarations } в объявлении формы и добавьте следующие строки:
    FClientInstance : TFarProc; 
    FPrevClientProc : TFarProc; 
    procedure ClientWndProc(var Message: TMessage); 
    
  5. Добавьте следующие строки в разделе implementation:
    procedure TMainForm.ClientWndProc(var Message: TMessage); 
    var
      Dc : hDC; 
      Row : Integer; 
      Col : Integer; 
    begin
      with Message do
      case Msg of
        WM_ERASEBKGND: 
        begin
          Dc := TWMEraseBkGnd(Message).Dc; 
          for Row := 0 to ClientHeight div Image1.Picture.Height do
            for Col := 0 to ClientWidth div Image1.Picture.Width do
              BitBlt(Dc, Col * Image1.Picture.Width, Row * Image1.Picture.Height, Image1.Picture.Width,
                     Image1.Picture.Height, Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY); 
          Result := 1; 
        end; 
        else
          Result:=CallWindowProc(FPrevClientProc,ClientHandle,Msg,wParam,lParam); 
      end; 
    end; 
    
  6. В методе формы OnCreate добавьте:
    FClientInstance := MakeObjectInstance(ClientWndProc); 
    FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC)); 
    SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance)); 
    
  7. Добавьте к проекту новую форму и установите ее свойство FormStyle в fsMDIChild.

У Вас получился MDI-проект с «обоями» в клиентской области MDI формы.

Kwork.ru - услуги фрилансеров от 500 руб.
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (10 оценок, среднее: 4,90 из 5)
Загрузка...
Добавить комментарий