Re: [問題] mfc不知如何下手

看板C_and_CPP (C/C++)作者 (突然覺得自己是孤獨的...)時間13年前 (2011/04/08 00:20), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串5/5 (看更多)
※ 引述《Anonymoux (猜猜偶素隨 ? ^*^)》之銘言: : 標題: 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 回應給purpose的推文... UpdateData根本不是這樣子用的~~ 需要自行呼叫UpdateData的場合, 絕對不是利用DoModal(), 然後帶有OK/Cancel Button,只等待使用者輸入資料的對話視窗 通常需要自行呼叫UpdataData()的視窗只有兩種 一種是主視窗, 另外一種是Modeless的對話盒 如果是主視窗的話, 需要執行動作的button根本可能不是OK/Cancel了... (甚至已經沒有OK, 取而代之的可能是另外一個Execute的button) 這個Joseph, 我個人認為是走火入魔, 本末倒置了... 再更深的去了解MFC的機制, 甚至是看一下原始碼, 了解一下DDE, 你會更清楚的知道, 為什麼會包裝成UpdateData這個方法, 然後更知道他的好用之處 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.76.33

04/08 00:31, , 1F
他應該是想表達MSDN上UpdateData函數的說明,只有告訴你很
04/08 00:31, 1F

04/08 00:31, , 2F
簡單的一些東西,卻沒有告訴你到底怎樣才叫正確使用。
04/08 00:31, 2F

04/08 00:32, , 3F
就一個沒撞過牆的人來說,光看MSDN是很有可能出現這些錯誤
04/08 00:32, 3F

04/08 00:32, , 4F
使用的例子的。
04/08 00:32, 4F

04/10 22:04, , 5F
MFC本來就不是隨便看一下MSDN函數簡介就來用的類別庫
04/10 22:04, 5F

04/10 22:04, , 6F
事實上每一套類別庫, 都是需要花時間下去磨才能熟悉的
04/10 22:04, 6F
文章代碼(AID): #1DdUGxss (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DdUGxss (C_and_CPP)