您的位置:首页 > 产品设计 > UI/UE

Warning: dialog data checkbox value (-858993460) out of range.

2013-01-12 20:45 609 查看
checkbox期望的值的为0、1和2共3个,如果传入其他值在调试时就会在vs输出窗口输入一行字符串:“Warning: dialog data checkbox value (%d) out of range. ”,其中的 %d 就是传入的值。

般情况下,我们设置checkbox不会传入除了TRUE、FALSE、true和false以外的值的,出现那一行字符串一般是在对话框初始化的时候,如下面的CDemoDlg的m_bEffect没有在构造函数后初始化

CDemoDlg::CDemoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDemoDlg::IDD, pParent)
//  , m_bEffect(FALSE)        // 如果m_bEffect没有在这里初始化
{
//{{AFX_DATA_INIT(CDemoDlg)
//  m_bEffect = FALSE;        // 如果m_bEffect也没有在这里初始化
//}}AFX_DATA_INIT
}
void CDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDemoDlg)
DDX_Check(pDX, IDC_CHECK_EFFECT, m_bEffect);    // m_bEffect没有初始化这里就会输出那一行字符串
//}}AFX_DATA_MAP
}

找到没有初始化的checkbox,在对话框构造函数添加初始化代码即可。但如果对话框有很多,难于找到没有初始化的checkbox,可在输出到vs输出窗口的函数里下断点。使用TRACE宏可以方便地在vs窗口输出信息,那一行字符串也是使用TRACE来输出的,而TRACE宏实际是使用CTraceFileAndLineInfo类来输出,在CTraceFileAndLineInfo的operator()函数下断点即可(CTraceFileAndLineInfo定义在vs sdk目录中的atltrace.h文件里)。如下图





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐