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