作者EdisonX (卡卡獸)
看板C_and_CPP
標題[問題] 多個 EditBox 同步更新
時間Fri Mar 7 03:06:20 2014
開發平台(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
→ azureblaze:overflow應該是hex改動->dec更新->hex更新->loop 03/07 09:55
→ azureblaze:加些flag阻止更新觸發更新? 03/07 09:56
推 hichcock:keyword = event:EN_UPDATE 03/07 10:25
推 damody:一定會繞路啦~~~ 然後你DDX更新時要有變數判斷 同一樓說法 03/07 12:37
→ damody:去判斷目前的FOCUS是哪一個BOX 免的重複更新 03/07 12:38
→ hichcock:EN_SETFOCUS + EN_UPDATE 就完全避開了,也不需要 polling 03/07 13:32
推 worldlet:有考慮用 SetWindowText() 嗎 ? 03/07 14:35