做了一个简单的对话框类,在上面放一个按钮,和一个STATIC TEXT.打算按下按钮时候,发送WM_CTLCOLOR消息给对话框,然后调用HBRUSH CTextStaticDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 重画STATIC TEXT.可是不知道为什么不行,this指针编译没问题,可是不能达到目的,而HWND_BROADCAST也不行,反而还影响其他正在运行的程序!!怎么解决啊,帮帮忙!!void CTextStaticDlg::OnButton1()
{
// TODO: Add your control notification handler code here if(m_count=2)m_count=0;
// ::PostMessage((HWND)this,WM_CTLCOLOR,NULL,NULL);
::SendMessage(HWND_BROADCAST,WM_CTLCOLOR,NULL,NULL);
AfxMessageBox("bbbbbbbbbbbbbbbb");
}HBRUSH CTextStaticDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
if(pWnd->GetDlgCtrlID()==IDC_STATIC1)
{
if(m_count==0)
{
pDC->SetBkColor(RGB(255,0,0));
pDC->SetTextColor(RGB(0,255,0));
}
else
{
pDC->SetBkColor(RGB(0,0,255));
pDC->SetTextColor(RGB(0,255,0));
}
} return hbr;
}
if(m_count==2)m_count=0;已经改成成样了,原来就是这样!可是还是不行啊!!
void CTextStaticDlg::OnButton1()
{
// TODO: Add your control notification handler code here
m_count++;
m_count = m_count % 2; //效果与你下面if语句相同
//if(m_count==2)m_count=0;
//Invalidate()会发送窗口重绘的消息,每次重绘,OnCtlColor()函数都会
//被调用
Invalidate();
}HBRUSH CTextStaticDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
if(pWnd->GetDlgCtrlID()==IDC_STATIC1)
{
if(m_count==0)
{
pDC->SetBkColor(RGB(255,0,0));
pDC->SetTextColor(RGB(0,255,0));
}
else
{
pDC->SetBkColor(RGB(0,0,255));
pDC->SetTextColor(RGB(0,255,0));
}
} return hbr;
}