Как сделать элемент управления CStatic (MFC) прозрачным?

В моем приложении есть начальный диалог с изображением, которое заполняет весь диалог. Дополнительно есть элемент управления CStatic, который отображает некоторую переменную информацию для пользователя. Я сделал элемент управления CStatic прозрачным с помощью следующего кода:

HBRUSH CStartbildDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    if(pWnd->GetDlgCtrlID() == IDC_STATIC_INFO)
    {
        pDC->SetBkMode(TRANSPARENT);
        return reinterpret_cast(::GetStockObject(NULL_BRUSH));
    }
    else
        return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

Когда я изменяю текст статического элемента управления с помощью GetDlgItem (IDC_STATIC_INFO) -> SetWindowText , новый текст перекрывает старый текст (старый текст не удалено). У меня сработал метод 2 (адаптированный) из codeproject-link от Sanja.

GetDlgItem(IDC_STATIC_INFO)->SetWindowText(tmp);
CRect rect;
GetDlgItem(IDC_STATIC_INFO)->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect);
UpdateWindow();

6
задан Christian Ammer 6 April 2011 в 12:08
поделиться