[問題] 多個 EditBox 同步更新

看板C_and_CPP (C/C++)作者 (卡卡獸)時間12年前 (2014/03/07 03:06), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual Studio 2010 / 6.0 , MFC 問題(Question): 拿進制轉換器當例子較清楚。 假設有 3 個 editbox 分別是 IDC_HEX, IDC_OCT, IDC_DEC, 使用者目前正在輸入 IDC_HEX 時,其他兩個 IDC_OCT, IDC_DEC 會自動更新。 member data 包含 CString m_strHex, m_strOct, m_strDec ; // 子控制字串 unsigned int m_uVal; // 中介數值 ---- 稍查過,普遍性建議是用 DDX , UpdateData 方式去做更新, 但這裡我推出來邏輯上還是造成 stack ov (不排除是我想法有誤,賜教)。 目前我用的方式是去設一個 timer (100ms), 去 polling 目前得到 focus 之視窗 在哪,若是 IDC_HEX 的話,將 m_strHex 轉到 m_uVal 裡去,只更新 IDC_OCT, IDC_DEC,這樣一來感覺繞路了些。 另一種想法是開 Thread 做 Timer 在做的事,難易度和 Timer 一樣,感覺也是在 繞路。想知道這種 UI 之設計是否有其他手法可完成? 謝謝各位不吝指教,感激不盡。 -- ~ 這輩子與神手無緣 我只好當神獸了 ~ 卡卡獸 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.74.188

03/07 09:55, , 1F
overflow應該是hex改動->dec更新->hex更新->loop
03/07 09:55, 1F

03/07 09:56, , 2F
加些flag阻止更新觸發更新?
03/07 09:56, 2F

03/07 10:25, , 3F
keyword = event:EN_UPDATE
03/07 10:25, 3F

03/07 12:37, , 4F
一定會繞路啦~~~ 然後你DDX更新時要有變數判斷 同一樓說法
03/07 12:37, 4F

03/07 12:38, , 5F
去判斷目前的FOCUS是哪一個BOX 免的重複更新
03/07 12:38, 5F

03/07 13:32, , 6F
EN_SETFOCUS + EN_UPDATE 就完全避開了,也不需要 polling
03/07 13:32, 6F

03/07 14:35, , 7F
有考慮用 SetWindowText() 嗎 ?
03/07 14:35, 7F
文章代碼(AID): #1J6CSmPc (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1J6CSmPc (C_and_CPP)