Transparent static text label

Hi
I'm trying to write a small dialog application. I have a static label control on the dialog and I want to make its background transparent, but I'm not having any success.

Here's the code I'm trying at the moment

      CStatic* pStaticText = (CStatic*)GetDescendantWindow(IDC_STATIC_COMPANY);
            
      if (pStaticText != NULL)
      {
            DWORD style = pStaticText->GetStyle();


            if (SetWindowLong(pStaticText->m_hWnd, GWL_STYLE, style | SS_NOTIFY) == 0)
                  MessageBox("Unable to set window style");
            
            CDC* pStaticDC = pStaticText->GetDC();

            if (pStaticDC != NULL)
            {                  
                  
                  COLORREF bob = 0xFFFFFF;
                  
                  pStaticDC->SetBkMode(OPAQUE);
                  
                  if (pStaticDC->SetBkColor(bob) == 0x80000000)                  
                        MessageBox("Unable to set back colour");
                  
                  pStaticDC->SetBkColor(bob);

                  CString fontName = "Times New Roman";

                  CFont staticFont;            
                  if (staticFont.CreateFont(1000,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_DONTCARE,fontName) != TRUE)
                        MessageBox("Unable to create font");
            
                  pStaticText->SetFont(&staticFont,TRUE);

                  
            }else
            {
                  MessageBox("Unable to get DC");
            }
      }
      else
      {
            MessageBox("Unable to get window");
      }


I've been trying to change the font size as well! In this code I'm simply trying to change the background colour just to see if anything happens.  I haven't done any VC++ programming for a very long time) (It easy in VB!!!)

Thanks in advance

~Ian
microdrainageAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
olgatConnect With a Mentor Commented:
You can  override OnCtlColor message handler in your dialog as follows:
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor!=CTLCOLOR_STATIC)
// Normal processing: don't do anything
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// Set background mode transparent with null brush
      pDC->SetBkMode(TRANSPARENT);
      pDC->SetTextColor(someColor);

      return  m_clHollowBrush;
}

where hollow brush was created as
m_clHollowBrush.CreateStockObject(NULL_BRUSH)

0
All Courses

From novice to tech pro — start learning today.