Hintegrundfarbe von Fenster



  • Hallo,

    ich möchte innerhalb eines Hauptdialogfensters ein weiteres Fenster
    erzeugen, das einen weißen Hintergund hat. Ich habe dazu eine Klasse
    erstellt, die von CWnd abgeleitet ist. Ein Objekt dieser Klasse
    verwende ich dann in dem Hauptdialogfenster. Das Unterfenster erzeuge ich über

    Unterfenster.Create(NULL, "Hi", WS_CHILD | WS_VISIBLE | WS_BORDER,
    CRect(100, 100, 200, 200), this, 1234);

    Leider wird immer grau als Hintergrund des Unterfensters gewählt (ist halt Standard). Weiss jemand wie man das ändern kann. Mit
    "PreCreateWindow" evtl. ?

    Habe auch nach längerer Suche nicht gefunden.

    Danke im Voraus

    Alex



  • also create(null ???, ...

    A)
    wenn ich klassen (win) nutzen will, die nicht von haus aus verwendet werden können (z.b edit, button ...) muß ich diese registieren.

    BOOL COneT32App::InitInstance()
    {
    
        // Register your unique class name that you wish to use
        WNDCLASS wndcls;
    
        memset(&wndcls, 0, sizeof(WNDCLASS));   // start with NULL
                                                // defaults
    
        wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
    
        //you can specify your own window procedure
        wndcls.lpfnWndProc = ::DefWindowProc; 
        wndcls.hInstance = AfxGetInstanceHandle();
        wndcls.hIcon = LoadIcon(IDR_MAINFRAME); // or load a different icon
        wndcls.hCursor = LoadCursor( IDC_ARROW );
        wndcls.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
        wndcls.lpszMenuName = NULL;
    
        // Specify your own class name for using FindWindow later
        wndcls.lpszClassName = _T("MyNewClass");
    
        // Register the new class and exit if it fails
        if(!AfxRegisterClass(&wndcls))
        {
           TRACE("Class Registration Failed\n");
           return FALSE;
        }
    
        // Rest of InitInstance goes here
        ...
    }
    

    oder

    LPCTSTR lpszClass=AfxRegisterWndClass(nClass, ::LoadCursor(NULL, IDC_ARROW), NULL, NULL);
        CWnd::CreateEx(dwExStyle, lpszClass, "", dwStyle | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, \
                       rect, pParent, nID);
    

    😎

    oder man nutzt

    LRESULT CPanelCtrlD::OnEraseBkgnd(WPARAM wParam, LPARAM lParam)
    {
    
    }
    
    BOOL CCaptionD::OnEraseBkgnd(CDC* pDC)
    {
    
    }
    

    volker


Anmelden zum Antworten