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