当前位置: 代码迷 >> VC/MFC >> 单选按钮控件实例里的疑义
  详细解决方案

单选按钮控件实例里的疑义

热度:90   发布时间:2016-05-02 03:34:04.0
单选按钮控件实例里的疑问

if (!pBtn)                                                        //这句是什么意思?


void CRadioAndCheckBoxSampleDlg::OnClickedButtonGetstate()
{
//颜色选择
UINT iColor[] = { IDC_RADIO_COLOR_RED, IDC_RADIO_COLOR_GREEN, IDC_RADIO_COLOR_BLUE };
CString sColor[] = { _T("红色"), _T("绿色"), _T("蓝色") };
CString sResultColor;
CButton *pBtn = NULL;
for (int i = 0; i < 3; i++)
{
pBtn = (CButton *)GetDlgItem(iColor[i]);//返回所标记的控件的指针
if (!pBtn)                                                        //这句是什么意思?
continue; //跳出当前循环
if (pBtn->GetCheck() == 1)
sResultColor = _T("颜色选择: ") + sColor[i];
}
}

------解决思路----------------------
这不是你自己的程序?
pBtn是控件指针,if (!pBtn) 意思是如果控件不存在!
------解决思路----------------------
if (!pBtn) 可以写成 if(pBtn == NULL)

 pBtn = (CButton *)GetDlgItem(iColor[i]);//返回所标记的控件的指针
        if (!pBtn)                                                        //这句是什么意思?
            continue;        //跳出当前循环
------------------------------------------------------------------------------------------
这几句的意思就是先获取按钮对象指针,如果指针为空,即没有获取到,显然是不能对这个按钮有任何后续的操作,这是一种安全检查,也是代码健壮性的必须要求,否则你的代码逻辑就存在瑕疵
------解决思路----------------------
用来让你的代码运行的更健壮,否则万一指针为空,没得到,直接就错误
  相关解决方案