MFC Feature Pack:CDialogEx-Implementierung

 C Programming >> C-Programmierung >  >> Tags >> MFC
MFC Feature Pack:CDialogEx-Implementierung

Die Betaversion des MFC Feature Pack (die Erweiterung von MFC 9 von Visual Studio 2008) enthält eine erweiterte Dialogklassenimplementierung, CDialogEx. Was dies für die Öffentlichkeit neu bringt, ist die Möglichkeit, den Hintergrund des Dialogfelds auf eine Farbe oder ein Bild einzustellen.

Eine erste neue Methode ermöglicht das Setzen einer Hintergrundfarbe.

void SetBackgroundColor(COLORREF color, BOOL bRepaint = TRUE);

Eine zweite überladene Methode erlaubt es, ein Bild auf den Hintergrund zu setzen.

void SetBackgroundImage(
    HBITMAP hBitmap, 
    BackgroundLocation location = BACKGR_TILE, 
    BOOL bAutoDestroy = TRUE, 
    BOOL bRepaint = TRUE);

BOOL SetBackgroundImage(
    UINT uiBmpResId, 
    BackgroundLocation location = BACKGR_TILE, 
    BOOL bRepaint = TRUE);

Sie können es wie folgt verwenden:

BOOL CDialogDemoDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// ...

	HBITMAP bmp = ::LoadBitmap(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_BITMAP_LOGO));
	SetBackgroundImage(bmp, BACKGR_TILE);

	return TRUE;
}

Was sehr seltsam ist, ist, dass die einzigen Stile für das Bild diese sind:

enum BackgroundLocation
{
	BACKGR_TILE,
	BACKGR_TOPLEFT,
	BACKGR_TOPRIGHT,
	BACKGR_BOTTOMLEFT,
	BACKGR_BOTTOMRIGHT,
};

Dieser Implementierung fehlen zwei grundlegende Stile:Center und Stretch. Ich verstehe wirklich nicht, warum sie nicht implementiert wurden. Es ist viel wahrscheinlicher, dass ein Bild zentriert oder gestreckt ist, das beispielsweise unten links ausgerichtet ist. Daher sehe ich nicht, wie gut diese Klasse ist, wenn ich das gesamte Gemälde selbst überschreiben muss, wenn ich diese Funktionalität benötige.

Hier ist eine Implementierung einer Dialogklasse, die diese Stile unterstützt.