Re: unable to display check/radio box with transparent background
Try this: (Note: Not sure if it will work for PocketPC)
#pragma once
// CTransparentCheckBox
class CTransparentCheckBox : public CButton
{
DECLARE_DYNAMIC(CTransparentCheckBox)
public:
CTransparentCheckBox();
virtual ~CTransparentCheckBox();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg HBRUSH CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
};
// TransparentCheckBox1.cpp : implementation file
//
#include "stdafx.h"
#include "TransparentCheckbox1.h"
// CTransparentCheckBox
IMPLEMENT_DYNAMIC(CTransparentCheckBox, CButton)
CTransparentCheckBox::CTransparentCheckBox()
{
}
CTransparentCheckBox::~CTransparentCheckBox()
{
}
BEGIN_MESSAGE_MAP(CTransparentCheckBox, CButton)
ON_WM_CTLCOLOR_REFLECT()
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
// CTransparentCheckBox message handlers
HBRUSH CTransparentCheckBox::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
BOOL CTransparentCheckBox::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
AliR.
"Ian" <Ian@discussions.microsoft.com> wrote in message
news:5B4C43F0-79F9-4ADD-8640-1C4076DD58A1@microsoft.com...
I am not able to get check boxes/radio buttons to be displayed with a
transparent background in my dialogs. The general technique for
displaying
controls with transparent backgrounds is described in more than a few
postings (e.g.
http://groups.google.ca/group/microsoft.public.pocketpc.developer/browse_thread/thread/e5d77d8f30350f3a/22ea8e331b6cd993?lnk=st&q=dialog+bitmap+static+text+background+transparent#22ea8e331b6cd993 )
.
The general technique in MFC is as follows:
HBRUSH CInsDialog:nCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return _brHollow; // this brush is defined elsewhere
}
This works well for most controls but not for checkboxes, radio buttons
and
tab controls - these controls alway have the standard windows 'grey'
background'. The last set of postings on this topic appear in 2002/2003
and I've not found anything since. Does anyone have a solution for this
'hiccup'? I am working with VS2005 running on Vista home premium.
Thanks,
Ian