21 сент. 2010 г.

SetWindowRgn

Функция SetWindowRgn устанавливает оконную область окну. Оконная область определяет область внутри окна, где операционная система разрешает прорисовку. Операционная система не отображает любую часть окна, которая лежит за пределами оконной области.
int SetWindowRgn(
    HWND hWnd, // дескриптор окна
    HRGN hRgn, // дескриптор области
    BOOL bRedraw // флаг перерисовывания окна
);
Параметры:

hWnd Дескриптор окна, для которого устанавливается оконная область.
hRgn Дескриптор области. Функция устанавливает оконную область окна в этой области.

Если hRgn равен NULL, функция устанавливает оконный регион в NULL.
bRedraw Булевое значение, определяющее как система будет перерисовывать окно после установки оконной области. Если bRedraw равен TRUE, операционная система делает ее, иначе нет.

Обычно, вы устанавливаете bRedraw в TRUE если окно видимо.
Возвращаемые значения:
При успешном завершении, функция возвращает ненулевое значение.

При ошибке возвращается ноль.
Замечания:
Если параметр bRedraw равен TRUE, система посылает сообщения WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED к окну.

Координаты оконной области окна относительны верхнему левому углу окна, но не его клиентской области.

После успешного вызова SetWindowRgn, операционная система владеет областью, указанной в дескрипторе областе hRgn. Операционная система не делает копию области. Таким образом, вы не должны делать любые дополнительные вызовы функций с дескриптором области. И особенно, не закрывайте дескриптор области. Для получения оконной области окна, вызовите функцию GetWindowRgn.
Смотрите также:
GetWindowRgn, WM_WINDOWPOSCHANGING