我创建一个child类型的子对话框,并在另一个窗口的OnCreate函数中创建这个子对话框
pSubDlg = new CSubDlg();
pSubDlg->Create(IDD_SUBDIALOG,this);
pSubDlg->MoveWindow(2,30,202,170);
pSubDlg->ShowWindow(SW_SHOW);然后我在这个子窗口上增加了静态文本控件,并响应OnCtlColor函数,在函数里面设置
文本控件颜色HBRUSH CSubDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(pWnd == this)
return m_bkBrush;
else if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(NULL_BRUSH);
}
 if(pWnd->GetDlgCtrlID()==IDC_STATIC123 )
 {
 pDC->SetTextColor(RGB(255,0,233));
 return m_staticBrush;
 }  return hbr;
}可是当我在这个函数开始处打断点,程序始终不能进入该函数,
然后我又用消息反射ON_WM_CTLCOLOR_REFLECT()来测试
同样,实现了CtlColor后,调试依然不能进入该函数,这是为什么呢HBRUSH CSubDlg::CtlColor(CDC* pDC, UINT nCtlColor) 
{
pDC->SetTextColor(RGB(255,0,233));
pDC->SetBkMode(TRANSPARENT);
return m_staticBrush;
}

解决方案 »

  1.   

    if(pWnd->m_hWnd == m_hWnd )
            return m_bkBrush;
      

  2.   

    谢谢fishion,我现在面临的问题是断点进不来这两个函数。
      

  3.   

    zhoulxp大大,状态条是对话框属性里的吗
      

  4.   

    设置一个断点调试一下,是否代码执行到了:
    pDC->SetTextColor(RGB(255,0,233));真怀疑消息映射加错了,没理由没效果。呵呵
      

  5.   

    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);BEGIN_MESSAGE_MAP(CSubDlg, CDialog)
    //{{AFX_MSG_MAP(CSubDlg)
    ON_WM_CTLCOLOR()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()HBRUSH CSubDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if(IDC_STATIC123 == pWnd->GetDlgCtrlID())
    {
    pDC->SetTextColor(RGB(255, 0, 128));
    return (HBRUSH)GetStockObject(NULL_BRUSH);
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  6.   


    万分感谢各位大大对我这个问题的关注!!!
    我说下大致的框架
    这个创建该子窗口的是一个继承CFormView的视图类,这个视图类有个类型为child的对话框我创建子窗口就是把该子窗口贴到CFormView的对话框中,然后在子窗口中添加ON_WM_CTLCOLOR()
    的消息映射,然后就打断点调试,发现OnCtlColor函数根本进不去我再重新创建个测试程序看看
      

  7.   

    我也遇到了这样的问题。nnd我用的是skinmagic
      

  8.   

    static的ID不能是IDC_STATIC 虽然在父对话框里这样可以。。