Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 警告C4800:&x27;int';:强制值为bool';正确';或';假';MFC(VC+;+;)中的(性能警告)_Visual C++_Mfc - Fatal编程技术网

Visual c++ 警告C4800:&x27;int';:强制值为bool';正确';或';假';MFC(VC+;+;)中的(性能警告)

Visual c++ 警告C4800:&x27;int';:强制值为bool';正确';或';假';MFC(VC+;+;)中的(性能警告),visual-c++,mfc,Visual C++,Mfc,我收到以下代码行中的警告“warning C4800:'int”:强制值bool'true'或'false'(性能警告): if (g_objConfigurationDetails.bAutoScan != m_objScanNASBtn.GetCheck()) { g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck(); } 两条线都给出了相同的警告。 其中bAutoScan

我收到以下代码行中的警告“warning C4800:'int”:强制值bool'true'或'false'(性能警告):

if (g_objConfigurationDetails.bAutoScan !=  m_objScanNASBtn.GetCheck())
        {
            g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck();
}
两条线都给出了相同的警告。 其中bAutoScan=bool m_objScanNASBtn=CButton

原因是MFC不返回布尔值:

使用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_复选框、BS_RADIOBUTTON或BS_3STATE样式创建的按钮控件的返回值为以下值之一:
-BST_未选中-按钮状态未选中。
-BST_已选中-按钮状态已选中。
-BST_不确定-按钮状态不确定(仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时适用)

所以你可能想要

if (g_objConfigurationDetails.bAutoScan
      != (m_objScanNASBtn.GetCheck() == BST_CHECKED))

以下是:

g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck();
应该是

g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck() == BST_CHECKED;

问题是
GetCheck()
不会返回
bool
,因此您必须编写一个比较-至少以
的形式0

GetCheck
返回一个整数,并将其与布尔值进行比较。根据您的布尔值,尝试将
GetCheck
BST\u UNCHECKED
BST\u CHECKED
进行比较,或者将其强制转换为布尔值,因为这两个值在数字上匹配true和false

g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck() == BST_CHECKED;