?
Solved

Having a problem setting a listbox's background as transparent using MFC's SetBkMode( ) in function OnCtlColor( )

Posted on 2003-10-27
3
Medium Priority
?
982 Views
Last Modified: 2006-11-17
I have set up an OnCtlColor( ) that is entered upon the initial drawing of a listbox control but fails to set it as transparent.  (I know this because I can see it in this function using the debugger under Visual C++.)  Later I want to write some text to this listbox and I can successfully change the font but can't make the background transparent so it shows up gray like the dialog box is.

It seems that I should be repainting/redrawing something after I put new text into this listbox control but I can't seem to figure out how to do it.

My purpose is to write some text in a font of my choice to the Dialog box so it has the background of the box itself rather than being with a white background.  Perhaps there is an easier way to do this.
0
Comment
Question by:jbeichler
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 3

Accepted Solution

by:
freewell earned 500 total points
ID: 9639375
Create a solid brush which has the system color same as COLOR_3DFACE (dialog color).


class CAboutDlg : public CDialog
{
public:
      CAboutDlg();
      CBrush m_BrushList;
...
}

BOOL CAboutDlg::OnInitDialog()
{
      CDialog::OnInitDialog();
      
      // TODO: Add extra initialization here
      m_BrushList.CreateSolidBrush(::GetSysColor(COLOR_3DFACE));
...
}

HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
      HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
      
      // TODO: Change any attributes of the DC here
      if(pWnd->GetDlgCtrlID()==IDC_LIST1)
      {
            pDC->SetBkMode(TRANSPARENT);
            hbr=(HBRUSH)m_BrushList;
      }

      // TODO: Return a different brush if the default is not desired
      return hbr;
}
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There is an easy way, in .NET, to centralize the treatment of all unexpected errors. First of all, instead of launching the application directly in a Form, you need first to write a Sub called Main, in a module. Then, set the Startup Object to th…
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question