Содержание материала

Функции работы с окнами и регионами

 

function SetWindowRgn(hWnd: HWND; hRgn: HRGN; bRedraw: BOOL): Integer; stdcall;

Устанавливает для окна с дескриптором hWnd регион отображения hRgn, при взведённом флаге bRedraw - перерисовывая окно

 

function GetWindowRgn(hWnd: HWND; hRgn: HRGN): Integer; stdcall;

Возвращает регион отображения hRgn для окна с дескриптором hWnd

 

Сразу оговорюсь, что на самом деле этих функций гораздо больше, равно как и область применения регионов гораздо ширше. Но нас они пока не волнуют. Итак, мы знаем, как создать и модифицировать регион, как скормить его окну (ибо параметр hWnd есть не что иное, как TWinControl.Handle), и как его уничтожить. Настало время слегка поэксперементировать.

 

Создание региона

 

Запускаем среду, заводим новый проект, тщательно сохраняем куда попало. В обработчике OnCreate пишем первое, что, по идее, приходит в голову:

Code:

procedure TForm1.FormCreate(Sender: TObject);

var

r: hRGN;

begin

r := CreateEllipticRgn (0, 0, Width, Height);

try

  SetWindowRgn (Handle, r, TRUE);

finally

  DeleteObject (r);

end;

end;

  

Результатом запуска окажется симпатичный эллипс на экране. А теперь попробуйте дописать такой простенький обработчик на OnKeyPress:

Code:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

var

bmp: TBitmap;

begin

if Key = 'p' then begin

  bmp := GetFormImage;

  try

    bmp.SaveToFile ('c:\temp.bmp');

  finally

    bmp.Free;

  end;

end;

end;

 

 

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

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


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