Rechteck soll in den Vordergrund



  • Hallo Leute,

    in meinem Dialog IDD_Page_Ausgabe befinden sich mehrere GroupBoxen.
    in der zugehörigen Page_Ausgabe.cpp wird in der OnPaint ein Rechteck gezeichnet

    void CPage_Ausgabe::OnPaint()
    {
    	if (RecOut == 1) {
    		CPaintDC dc(this);
    		CPen pen;
    		CBrush brush;
    		// Pen red
    		pen.CreatePen(PS_SOLID, 3, RGB(255,0,0));
    		// "transparent" brush
    		brush.CreateStockObject(HOLLOW_BRUSH);
    		// select brush and pen
    		dc.SelectObject(&pen);
    		dc.SelectObject(&brush);
    		// draw rectangle
    		dc.Rectangle(50,80,200,250);
    		DeleteObject(&pen);
    		DeleteObject(&brush); 
    	}
    }
    

    Das Rechteck wird aber hinten den GroupBoxen gezeichnet(ist nur zwischen den GroupBoxen sichtbar) -> wie bring ich das Rechteck in der Vordergrund?

    Hat jemand vielleicht eine Idee.
    mfg



  • Indem du ein - bis auf das Rechteck - transparentes Child-Fenster (Control) drüberlegst, und dieses "durchklickbar" machst, indem du WM_NCHITTEST behandelst und immer HTTRANSPARENT zurückgibst.


  • Mod

    ... oder anders gesagt. Alle Child Controls liegen immer über der Fläche des Dialoges.
    Also wie Hustbaer es schreibt: Du benötigst ein eigenes fenster, dass in der Z-Order nach den Groupboxen kommt. Und dann benötigst Du wahrscheinlich auch noch WS_CLIPSIBLINGS.



  • Willst du mit dem drübergelegtem Rechteck die Controls verstecken ?
    Dann rufe doch besser für jedes Control ShowWindow(SW_HIDE) auf.


Anmelden zum Antworten