看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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