PRB: BS_GROUPBOX styl podřízené okno pozadí Malování nesprávné

Překlady článku Překlady článku
ID článku: 79982 - Produkty, které se vztahují k tomuto článku.
3.00 3.10 WINDOWS kbprg kbprb kbcode
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Po vytvoření BS_GROUPBOX styl okna se nevymaže jeho pozadí správně.

Příčina

Nadřazené okno okno stylu BS_GROUPBOX má WS_CLIPCHILDREN styl, který zabraňuje nadřazené okno mazání pozadí skupinového rámečku.

Řešení

Podtřídy pole okno skupiny pro zpracování WM_ERASEBKGND zpráva smazáním jeho pozadí. Níže je fragment kódu k prokázání tohoto postupu.

Prohlášení

Toto chování je záměrné.

Další informace

WS_CLIPCHILDREN styl způsobí, že okno vyloučit oblasti obsazené podřízených oken při okna maluje jeho oblasti klienta. Styl okna BS_GROUPBOX je však statické ovládací prvek, který nikdy jeho pozadí vymaže. Mazání pozadí se odstraní všechny ovládací prvky nebo tlačítek, která se zobrazí v poli Skupina.

Proto při jiného podřízeného okna je vynechána nad pole skupiny a následně přetažen mimo kancelář, částí tohoto podřízeného okna zůstávají viditelné v poli Skupina pozadí. K tomuto problému nedochází, pokud nadřazené okno nemá WS_CLIPCHILDREN styl.

Následující fragment kódu, by měly být umístěny v postupu podtřídy skupinového rámečku. Tento kód se vymaže na pozadí rámečku.
   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.
    }
				

Vlastnosti

ID článku: 79982 - Poslední aktualizace: 11. února 2005 - Revize: 1.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Windows Software Development Kit 3.1
Klíčová slova: 
kbmt kb16bitonly kbbutton kbctrl kbprb KB79982 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:79982
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

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