治疗腋臭的主治医院:这是为什么??高手~~指点!!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 23:29:28
下面这段代码为什么我可以用来修改Edit的背景色而不能修改 Date Time Picker的背景色(我已将
IDC_EDIT1改了啊)
if(pWnd->GetDlgCtrlID()==IDC_EDIT1)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(210,240,0));
return m_brush;
}
return hbr;

好像这样是不行的,把断点设在if里面,都不会进去,说明Date Time Picker不会响应这个消息。

后来我试过下面的方法,是可行的:
创建一个继承自CDateTimeCtrl的子类,
响应这个子类的WM_ERASEBKGND消息,
在消息处理函数中,类似这样:
BOOL CMyDtPicker::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rcClient;
GetClientRect(rcClient);
HBRUSH hbr = ::CreateSolidBrush(RGB(210, 240, 0));
::FillRect(pDC->m_hDC, &rcClient, hbr);
::DeleteObject(hbr);
return TRUE;
//return CDateTimeCtrl::OnEraseBkgnd(pDC);
}

然后原来的对话框中,就给IDC_EDIT1链接一个变量,类型就是刚才创建的类CMyDtPicker,这样就可以了。