Przeźroczysty CStatic

Przeźroczysty CStatic
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

Cześć, mam na formie kontrolkę CStatic. I chcę, żeby jej tło było przeźroczyste.
Więc obsługuję komunikat WM_CTLCOLOR:

Kopiuj
 
HBRUSH CLiteIODialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	switch(nCtlColor)
	{
	case CTLCOLOR_STATIC:
		pDC->SetTextColor(RGB(0, 0, 0));
		pDC->SetBkMode(TRANSPARENT);
		break;
	}

	return blabla;
}

W efekcie mój CStatic ma faktycznie przeźroczyste tło, ale gdy zmienię mu tekst za pomocą SetWindowText, to wtedy stary tekst się nie czyści.
Wygląda to jakby nowy tekst został wypisany na starym. Jak temu zaradzić?
Próbowałem też z InvalidateRect, ale bezskutecznie:

Kopiuj
 
CRect r;
m_hintLabel.GetWindowRect(&r);
ScreenToClient(&r);
InvalidateRect(&r);
m_hintLabel.SetWindowText(txt); //nie ważne, czy InvalidateRect będzie przed, czy po SetWindowText
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

OK, doszedłem. Parent nie może mieć CLIP_SIBLINGS i/lub CLIP_CHILDREN

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.