Причина в том, что MFC GetCheck не возвращает логическое значение:
Возвращаемое значение из кнопки управления, созданной с помощью BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIUT, или стиль BS_3STATE - одно из следующих значений:
- BST_UNCHECKED - состояние кнопки не проверено.
- BST_CHECKED - состояние кнопки проверено.
- BST_INDETERMINATE - состояние кнопки не определено (применяется только в том случае, если кнопка имеетстиль BS_3STATE или BS_AUTO3STATE).
Так что вы, вероятно, хотите
if (g_objConfigurationDetails.bAutoScan
!= (m_objScanNASBtn.GetCheck() == BST_CHECKED))
или
bool bNASBtnChecked = (m_objScanNASBtn.GetCheck() == BST_CHECKED);
if (g_objConfigurationDetails.bAutoScan != bNASBtnChecked)
{
g_objConfigurationDetails.bAutoScan = bNASBtnChecked;
}