posted on 2007-12-12 10:48 迷宮の未來 閱讀(2085) 評論(11) 編輯 收藏 引用
不錯。這個(gè)問題確實(shí)比較容易被忽視 回復(fù) 更多評論
既然是MFC,基本上都會映射成一個(gè)成員變量來操作吧,就不會這么麻煩咯 回復(fù) 更多評論
有這種問題?? 沒遇到過,是你們使用的有問題吧,如果MFC有這種不確定性的問題,早就應(yīng)該發(fā)現(xiàn)了吧。 回復(fù) 更多評論
'有時(shí)會CRUSH'?能給個(gè)代碼能crush的嗎?有興趣深入看一下 回復(fù) 更多評論
@vc 我做的是一個(gè)控制面板程序,之前會CRUSH掉的部分代碼如下: BOOL CStockF10SetDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here //Init contrl data ....... //獲得注冊表的值 if(GetRegValues()) { //更新沒有值綁定的控件的顯示 SetCtrlState(); //更新有值綁定的控件的顯示 UpdateData(FALSE); } else { MessageBox("Get regedit values error!"); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CStockF10SetDlg::SetCtrlState() { //EnableForceSend ...... szTemp.Format("%02ld",gethour(m_nUpdateTime)); //將m_nUpdateTime這個(gè)時(shí)間值的小時(shí)部分顯示到控件 GetDlgItem(IDC_UPDATETIMEH)->SetWindowText(szTemp); szTemp.Format("%02ld",getminute(m_nUpdateTime)); //將m_nUpdateTime這個(gè)時(shí)間值的分鐘部分顯示到控件 GetDlgItem(IDC_UPDATETIMEM)->SetWindowText(szTemp); } 由于這個(gè)時(shí)間值我把它放在小時(shí)和分鐘兩個(gè)控件中顯示,所以沒有綁定成員變量,直接通過資源號來顯示數(shù)據(jù)的。代碼運(yùn)行到SetWindowText這里會CRUSH掉。 回復(fù) 更多評論
提到的問題,確實(shí)很有意思,沒遇到過。前不久做的一個(gè)項(xiàng)目中,寫的代碼與“追夢時(shí)代”的操作差不多,在VS2003.net和VS2005下不管哪種模式都沒有出現(xiàn)這種問題啊。 回復(fù) 更多評論
GetDlgItem(IDC_UPDATETIMEH)->SetWindowText(szTemp); 這種寫法本身就得挨批~ 回復(fù) 更多評論
這種情況不好說 回復(fù) 更多評論
@力為 94 回復(fù) 更多評論
這行代碼是在對話框初始化時(shí)調(diào)用的,此時(shí)對話框資源有可能還沒有創(chuàng)建起來, --------------------------- 收到 WM_INITDIALOG, 則對話框和子窗口已經(jīng)創(chuàng)建起來 執(zhí)行CDialog::OnInitDialog()之后, 則控件和變量已經(jīng)關(guān)聯(lián)起來(如果有的話) 這個(gè)是肯定的 至于樓主為什么會CRUSH,,,,,,奇怪.... 除非GetDlgItem(IDC_SOMEEDITCTRL) 中的ID對應(yīng)的控件不存在 回復(fù) 更多評論
至于樓主為什么會CRUSH,,,,,,奇怪.... 除非GetDlgItem(IDC_SOMEEDITCTRL) 中的ID對應(yīng)的控件不存在 控件沒創(chuàng)建好,返回的是一個(gè)空指針GetDlgItem返回值是一個(gè)CWnd* 我們可以這樣CWnd *pWnd = GetDlgItem(IDC_SOMEEDITCTRL); if(pWnd->GetSafeHwnd()) { .................. } 這就不會造成崩潰 但是,有可能那個(gè)控件沒數(shù)據(jù) 回復(fù) 更多評論
Powered by: C++博客 Copyright © 迷宮の未來