SORUN: Hatalı boyama BS_GROUPBOX stil alt pencere arka plan

Makale çevirileri Makale çevirileri
Makale numarası: 79982 - Bu makalenin geçerli olduğu ürünleri görün.
3.00 3.10 WINDOWS kbprg kbprb kbcode
Hepsini aç | Hepsini kapa

Belirtiler

BS_GROUPBOX stili pencere oluşturulduğunda, arka plan doğru silmez.

Neden

Ana pencere stili BS_GROUPBOX penceresinin üst pencere grup kutusunun arka planı silme arasında engeller WS_CLIPCHILDREN stilde.

Çözüm

Alt grup kutusu penceresini WM_ERASEBKGND iletinin arka silme tarafından işlenecek. Aşağıda, bu yordamın göstermek için bir kod parçası olur.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

WS_CLIPCHILDREN stili, bu pencere, istemci alanının boyayacağını alt windows tarafından kullanılan alanları çıkarmak bir pencere neden olur. Ancak, bir BS_GROUPBOX stili hiçbir zaman, arka plan silen bir statik denetimi penceredir. Arka plan silme, tüm denetimleri veya içinde <a2>Grup</a2> kutusunda görünen düğmeler kaldırır.

Bu nedenle, başka bir alt pencere üzerinde Grup kutusu bıraktı ve daha sonra yerine koyma sürüklediğiniz zaman, bu alt pencere bölümlerini grup kutusunun arka planda görünür kalır. Ana pencere WS_CLIPCHILDREN stili yoksa, bu sorun oluşmaz.

Aşağıdaki kod bölümü grup kutusunun alt yordamda yerleştirilmelidir. Bu kod <a0>Grup</a0> kutusunun arka planı siler.
   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.
    }
				

Özellikler

Makale numarası: 79982 - Last Review: 11 Şubat 2005 Cuma - Gözden geçirme: 1.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows Software Development Kit 3.1
Anahtar Kelimeler: 
kbmt kb16bitonly kbbutton kbctrl kbprb KB79982 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:79982
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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