Hintergrundbild und transparenz von Steuerelementen



  • hallo zusammen.

    ich zeichne in meiner OnPaint Funktion ein Hintergrundbild:

    void MyClass::OnPaint() 
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // Gerätekontext für Zeichnen
    
    		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    
    		// Symbol in Client-Rechteck zentrieren
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// Symbol zeichnen
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else
    	{
    		CPaintDC pDC(this);
    		CBitmap bmp;
    		bmp.LoadBitmap(IDB_BACKPIC);
    		CDC dcMem;
    		dcMem.CreateCompatibleDC(&pDC);
    		dcMem.SelectObject (&bmp);
    		BITMAP bmpInfo;
    		bmp.GetBitmap(&bmpInfo);	
    					pDC.BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcMem,0,0,SRCCOPY);
    
    		CDialog::OnPaint();
    	}
    }
    

    in dem DialogEditor(Ressourceneditor) habe ich die Option bei Eigenschaften->Formate "Untergeordnete ausschneiden" aktiviert, sodass meine Steuerelemente alle in den Vordergrund rücken.

    Mein Problem hierbei ist jedoch, dass z.B. ein Static mit grauen Hintergrund in den Vordergrund gerückt wird, obwohl das Steuerelement als Transparent gesetzt wrude. Also möchte ich quasi erreichen, dass wirklich nur der Text des Elements angezeigt wird.

    Habe außerdem auch schon in OnCtlColor versucht die Transparenz zu erwzingen, jedoch ohne erfolg:

    pDC->SetBkMode(TRANSPARENT);
    

    Hoffe mir kann jemand helfen.

    MFG phiberK



  • hm habe bisher immer noch keine Lösung gefunden.. hoffe es kommt noch jemand der eine Idee hat.

    gruß


Anmelden zum Antworten