Solved

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

Posted on 2003-10-27
3
962 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 125 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
upcasting down casting object remains same but refernece changes 8 70
matchUp  challenge 9 134
Adjust the position 3 75
Advice in Xamarin 21 121
Navigation is an important part of web design from a usability perspective. But it is often a pain when it comes to a developer’s perspective. By navigation, it often means menuing. This is less theory and more practical of how to get a specific gro…
When we want to run, execute or repeat a statement multiple times, a loop is necessary. This article covers the two types of loops in Python: the while loop and the for loop.
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

751 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