SORUN: Hatalı boyama BS_GROUPBOX stil alt pencere arka plan

Ö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
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
3.00 3.10 WINDOWS kbprg kbprb kbcode
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.    }				
3.00 3.10

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 79982 - Son İnceleme: 12/04/2015 09:11:13 - Düzeltme: 1.1

Microsoft Windows Software Development Kit 3.1

  • kbnosurvey kbarchive kbmt kb16bitonly kbbutton kbctrl kbprb KB79982 KbMttr
Geri bildirim