首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

使ListCtrl背景透明.文字好像是悬浮解决思路

2012-04-03 
使ListCtrl背景透明...文字好像是悬浮C/C++ codeclass CMyDialog : public CDialog{enum { IDD IDD_DIAL

使ListCtrl背景透明...文字好像是悬浮

C/C++ code
class CMyDialog : public CDialog{    enum { IDD = IDD_DIALOG1 };    DECLARE_MESSAGE_MAP()public:    CMyDialog(CWnd* pParent = NULL);    virtual BOOL OnInitDialog();    afx_msg BOOL OnEraseBkgnd(CDC* pDC);};BEGIN_MESSAGE_MAP(CMyDialog, CDialog)    ON_WM_ERASEBKGND()END_MESSAGE_MAP()CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)    : CDialog(CMyDialog::IDD, pParent){}BOOL CMyDialog::OnInitDialog(){    CDialog::OnInitDialog();    ModifyStyleEx(0, WS_EX_LAYERED);    ModifyStyleEx(::GetDlgItem(this->m_hWnd, IDC_LIST1), 0, WS_EX_LAYERED, 0);  // 使IDC_LIST1控件透明    SetLayeredWindowAttributes(RGB(1,2,3), 0, LWA_COLORKEY);    return TRUE;}BOOL CMyDialog::OnEraseBkgnd(CDC* pDC){    RECT rc;    GetClientRect(&rc);    pDC->FillSolidRect(&rc, RGB(1,2,3));   // 使IDC_LIST1控件透明        RECT rcListCtrl;    ::GetClientRect(::GetDlgItem(this->m_hWnd, IDC_LIST1), &rcList);    pDC->FillSolidRect(&rcListCtrl, RGB(1,2,3));    return TRUE;}


现在我的顶层窗口背景透明了...怎么使ListCtrl的背景也透明呢(只看到ListCtrl上面的字体,那些文字好像是悬浮的)...

[解决办法]
还要响应NM_CUSTOMDRAW设置文字背景。
另外,下面这段代码也是多余的:
RECT rcListCtrl;
::GetClientRect(::GetDlgItem(this->m_hWnd, IDC_LIST1), &rcList);
pDC->FillSolidRect(&rcListCtrl, RGB(1,2,3));

热点排行