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

 checkbox期望的值的爲0、1和2共3個,如果傳入其他值在調試時就會在vs輸出窗口輸入一行字符串:“Warning: dialog data checkbox value (%d) out of range. ”,其中的 %d 就是傳入的值。
般情況下,我們設置checkbox不會傳入除了TRUE、FALSE、true和false以外的值的,出現那一行字符串一般是在對話框初始化的時候,如下面的CDemoDlg的m_bEffect沒有在構造函數後初始化

  1. CDemoDlg::CDemoDlg(CWnd* pParent /*=NULL*/
  2.     : CDialog(CDemoDlg::IDD, pParent) 
  3. //  , m_bEffect(FALSE)        // 如果m_bEffect沒有在這裏初始化 
  4.     //{{AFX_DATA_INIT(CDemoDlg) 
  5. //  m_bEffect = FALSE;        // 如果m_bEffect也沒有在這裏初始化 
  6.     //}}AFX_DATA_INIT 
  7. void CDemoDlg::DoDataExchange(CDataExchange* pDX) 
  8.     CDialog::DoDataExchange(pDX); 
  9.     //{{AFX_DATA_MAP(CDemoDlg) 
  10.     DDX_Check(pDX, IDC_CHECK_EFFECT, m_bEffect);    // m_bEffect沒有初始化這裏就會輸出那一行字符串 
  11.     //}}AFX_DATA_MAP 

找到沒有初始化的checkbox,在對話框構造函數添加初始化代碼即可。但如果對話框有很多,難於找到沒有初始化的checkbox,可在輸出到vs輸出窗口的函數裏下斷點。使用TRACE宏可以方便地在vs窗口輸出信息,那一行字符串也是使用TRACE來輸出的,而TRACE宏實際是使用CTraceFileAndLineInfo類來輸出,在CTraceFileAndLineInfo的operator()函數下斷點即可(CTraceFileAndLineInfo定義在vs sdk目錄中的atltrace.h文件裏)。如下圖

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章