Функции работы с окнами и регионами
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; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!