伊莉討論區

標題: [已解決]Visual c++ 2010 MFC AddString函數以及CString用法 [打印本頁]

作者: vbn710565    時間: 2013-9-3 09:03 AM     標題: [已解決]Visual c++ 2010 MFC AddString函數以及CString用法

本帖最後由 vbn710565 於 2013-9-3 11:34 AM 編輯

各位版大們好~小弟最近在學習MFC(因為公司經理指定...)最近在使用上CString以及AddString在創建ListBox及ComboBox時
為什麼不能這樣寫:
  1. BOOL CCamdlg::OnInitDialog()
  2. {
  3.         CDialogEx::OnInitDialog();

  4.         // TODO:  在此加入額外的初始化
  5.         CString item[5]={"one","two","three","four","five"};
  6.         for(int i=0;i<5;i++)
  7.         ((CListBox*)GetDlgItem(IDD_camdlg))->AddString(item[i]);
  8.         ((CListBox*)GetDlgItem(IDD_camdlg))->SetCurSel(0);
  9.         return TRUE;  // return TRUE unless you set the focus to a control
  10.         // EXCEPTION: OCX 屬性頁應傳回 FALSE
  11. }
複製代碼
執行時會中斷

顯示:
於 0x0154e9dc 的 test.exe 中第一個可能發生的例外狀況: 0xC0000005: 讀取位置 0x00000020 時發生存取違規
於 0x0154e9dc 的 test.exe 中發生未處理的例外狀況: 0xC0000005: 讀取位置 0x00000020 時發生存取違規
是不是我有什麼地方沒宣告好??
我已經看書、查資料快一個星期....還是無解
求各位版大解惑
如果還需要付上其他段程式碼我會立即付上的...

作者: kaworucloud    時間: 2013-9-3 11:14 AM

基本上這一段看起來沒問題,只不過 IDD_camdlg 這邊有點怪

IDD_ 習慣上是給 Dialog 用的,CListBox 是個 Control,
如果你沒自己改過 ID,那應該會是 IDC_ 開頭才對

比較大的可能性是你給錯 ID,GetDlgItem 回傳的是 NULL 或非你預期的元件
作者: cockroachrun    時間: 2013-9-3 11:16 AM

請問你的 IDD_camdlg 是ListBox control 的ID 嗎?
如果不是. 當然會出問題.
作者: vbn710565    時間: 2013-9-3 11:33 AM

感謝兩位大大,真是一語驚醒夢中人
真的只是給錯ID
不知為何DEBUG這麼久一直沒注意到那邊




歡迎光臨 伊莉討論區 (http://www04.eyny.com/) Powered by Discuz!