Отрисовка только в контексте дочернего окна

Тема в разделе "WASM.WIN32", создана пользователем HALT, 11 ноя 2005.

  1. HALT

    HALT New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    10
    Здравствуйте! Помогите, плиз!

    Есть ресурс с диалог-боксом, на нем контрол (фрейм). Обрабатываю сообщение WM_PAINT, получаю контекст сего контрола (через BeginPaint)

    и что-то на нем "рисую". Проблема в том, что если задать координаты точки выходящие за пределы окна контрола, точка все равно будет отрисована - за пределами контрола в окне диалога.

    Как можно запретить отрисовку для данного контекста, если координаты точки выходят за границы контрола в чьем окне планируется это делать.

    Вручную отрубать то что выходит за границы ректангла (GetClientRect) не хочется.

    Подскажите пожалкуйста кому не лень. Заранее спасибо.
     
  2. SDragon

    SDragon New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2005
    Сообщения:
    133
    Адрес:
    Siberia
    Это называется clipping, смотри в MSDN/Platform SDK.
    Код (Text):
    1. GetClientRect(hwnd, &r);
    2. SelectClipRgn(hdc, CreateRectRgn(r.left, r.top, r.right, r.bottom))
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Диалог должен иметь WS_CLIPCHILDREN флаг.
     
  4. HALT

    HALT New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    10
    Спасибо, SDragon и AsmGuru62! Очень помогли.

    Это то что мне нужно.