我正在为系统更新一些旧代码,我不明白为什么检查编辑控件是在静态情况下工作。
以下是代码:
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
{
if( ((pWnd->GetDlgCtrlID() == IDC_EDIT_SP_FROM) || (pWnd->GetDlgCtrlID() == IDC_EDIT_SP_TO)) &&
(m_RadioDateSelection == 0) )
{
pDC->SetBkColor(g_crSectionLTBlue);
hbr = g_cbSectionLTBlue;
break;
}
pDC->SetTextColor(g_crBlack);
hbr = g_cbSectionLTBlue;
pDC->SetBkColor(g_crSectionLTBlue);
}
break;
case CTLCOLOR_LISTBOX:
pDC->SetTextColor(g_crBlack);
pDC->SetBkColor(g_crWhite);
hbr = (HBRUSH)GetStockObject(WHITE_BRUSH);
break;
case CTLCOLOR_EDIT: case CTLCOLOR_MSGBOX:
pDC->SetTextColor(g_crBlack);
pDC->SetBkColor(g_crWhite);
hbr = (HBRUSH)GetStockObject(WHITE_BRUSH);
break;
}
请注意,CTLCOLOR_STATIC中有一个IDC_EDIT控件的检查。 我的问题是,如果它是一个编辑控件,它甚至不应该检查它,它应该永远不会通过检查,因此编辑控件的背景永远不会变成蓝色。此外,在静态情况下,任何情况下颜色都不会设置为白色。但是,当前检查工作,当收音机设置为0时,两个框都是蓝色的,如果不是,则它们变为白色。在我的静态情况下,bkcolor永远不会设置为白色,那么为什么它会正确切换而不是总是蓝色,或者如果它将其视为编辑并将其设置为白色,为什么bkcolor始终不是白色?
是否可以在静态情况下检查编辑控件?