Проблема: Стиль BS_GROUPBOX дочернего окна фон, рисование неправильный

Переводы статьи Переводы статьи
Код статьи: 79982 - Vizualiza?i produsele pentru care se aplic? acest articol.
3.00 3.10 WINDOWS kbprg kbprb kbcode
Развернуть все | Свернуть все

Проблема

При создании стиля окна BS_GROUPBOX своего фона, не приводит к стиранию правильно.

Причина

Родительское окно стилей окна BS_GROUPBOX имеет стиль WS_CLIPCHILDREN, которое предотвращает удаление фон поля группы родительского окна.

Решение

Подкласс окно группы, для обработки сообщения WM_ERASEBKGND, стирание его фона. Перечисленные ниже — это фрагмент кода для демонстрации этой процедуры.

Статус

Такое поведение является особенностью данного продукта..

Дополнительная информация

Стиль WS_CLIPCHILDREN вызывает окно, чтобы исключить областей, занятых дочерние окна, когда окно рисует свою клиентскую область. Тем не менее BS_GROUPBOX стиль окна — это статический элемент управления никогда не стирает его фона. Удаление фона удаляет все элементы управления или кнопки, появляющиеся в группе.

Таким образом когда удалены через группу и затем перетащить от другого дочернего окна части этого дочернего окна остаются видимыми в фоновом режиме в области группы. Эта проблема не возникает, когда родительское окно не имеет стиля WS_CLIPCHILDREN.

В следующем фрагменте кода могут быть помещены в процедуре подкласс области группы. Этот код удаляет фон поля группы.
   case WM_ERASEBKGND:

    {
    HBRUSH  hBrush, hOldBrush;
    HPEN    hPen, hOldPen;
    RECT    rect;
    HDC     hDC;

    hDC = GetDC(hWnd);

    // Obtain a handle to the parent window's background brush.
    hBrush = GetClassWord(ghWnd, GCW_HBRBACKGROUND);
    hOldBrush = SelectObject(hDC, hBrush);

    // Create a background-colored pen to draw the rectangle
    // borders, where gWindowColor is some globally defined
    // COLORREF variable used to paint the window's background
    hPen = CreatePen(PS_SOLID, 1, gWindowColor);
    hOldPen = SelectObject(hDC, hPen);

    // Erase the group box's background.
    GetClientRect(hWnd, &rect);
    Rectangle(hDC, rect.left, rect.top, rect.right, rect.bottom);

    // Restore the original objects before releasing the DC.
    SelectObject(hDC, hOldPen);
    SelectObject(hDC, hOldBrush);

    // Delete the created object.
    DeleteObject(hPen);

    ReleaseDC(hWnd, hDC);

    // Instruct Windows to paint the group box text and frame.
    InvalidateRect(hWnd, NULL, FALSE);

    // Insert code here to instruct the contents of the group box
    // to repaint as well.

    return TRUE; // Background has been erased.
    }
				

Свойства

Код статьи: 79982 - Последний отзыв: 8 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows Software Development Kit 3.1
Ключевые слова: 
kb16bitonly kbbutton kbctrl kbprb kbmt KB79982 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:79982
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com