作者Anonymoux (猜猜偶素隨 ? ^*^)
看板C_and_CPP
標題Re: [問題] mfc不知如何下手
時間Thu Apr 7 22:38:15 2011
※ 引述《purpose (purpose)》之銘言:
: ※ 引述《steven70101 (老人)》之銘言:
: : 最近剛入公司,要學習MFC的用法
: : c++跟win32 api都是略懂(程式越學越不敢說懂...)
: 以 Edit Control 為例,當在對話方塊拉好一個 Edit 控件,然後在上面按右鍵,
: 選擇『加入變數』。
: 最右邊 (VC 2008 為例) 會有個「類別」,如果選擇 Value,且「變數型別」
: 為 CString,則表示將這個 Edit 控件跟一個 CString 物件綁定。
: 每當執行 UpdateData() 後,螢幕畫面上的字就會跟 CString 物件的值同步。
: 如果『加入變數』時,選擇「類別 = Control」,這時候「變數型別」就是一個關鍵,
看到這邊我一直很想問關於 UpdateData
用他來GOOGLE第一頁應該就會有 這篇
http://www.flounder.com/updatedata.htm
他在討論說 應該要避免用 UpdateData? 但不是很了解意思
我自己的經驗是在控制項很多時會產生畫面頓頓的副作用
在某些時候還會導致出現連續驗證錯誤資料的警告對話框
所以對於這個函數到底要不要使用呢?
從寫的角度來看是很方便沒錯
但後續似乎會導致更多問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.105.83.236
推 purpose:這作者約瑟夫也實在強者,一個函數就能觀察出這麼多論點 04/07 23:28
→ purpose:比你是要「修改」資料的對話方塊,一開始跳出來會顯示既有 04/07 23:29
→ purpose:的資料,假設當姓名修改成「馬英九」時,你做了即時檢查 04/07 23:30
→ purpose:回應「非本名」然後把 name 變數改成空字串,再做UpdateDa 04/07 23:30
→ purpose:ta(FALSE) 使姓名欄位清空。然後使用者不爽改,按了取消 04/07 23:31
→ purpose:這時候的語意應該是name變數值維持原樣,但實際上卻已經被 04/07 23:31
→ purpose:UpdateData(FALSE) 把 name 字串錯誤的改成 "" 了 04/07 23:32