Re: [問題] 多個 EditBox 同步更新
抱歉這幾天較忙沒空上來看,然後回覆有點長,所以直接 reply ,見諒。
原推文引用
→
03/07 09:55,
03/07 09:55
→
03/07 09:56,
03/07 09:56
對,原文推指的 OV 是一樓意思,然後我 "原以為" 是不是有方法,
可以在 DoDataExchange 裡面直接判斷 flag,做更新即可,
發現好像不是我所想像。
推
03/07 10:25,
03/07 10:25
推
03/07 12:37,
03/07 12:37
→
03/07 12:38,
03/07 12:38
一開始 google 到所說的讓人覺得很簡單,所以想說是不是我哪裡判斷有誤,
看來還是多少會繞路。
→
03/07 13:32,
03/07 13:32
推
03/07 14:35,
03/07 14:35
後來我有先實作另一種功能還不錯的,鑑於 Code 沒在身邊講原理。
主原理即如 hichcock 所述,我在 data member 裡多了三個變數,
bool m_bActiveOct, m_bActiveDec, m_bActiveHex ;
在 EN_SETFOUCUS 時更新這三支變數,然後在 EN_CHANGE 時
(這裡用 EN_CHANGE 和 EN_UPDATE 應該沒什麼差別吧?)
看 flag 做更新, Code 大致如下
--------
void CMyDlg::OctSetFocus() {
m_bActiveOct = true;
m_bActiveDec = false;
m_bActiveHex = false;
}
void CMyDlg::OctChange() {
if(m_bActiveOct) {
char szBuf[256] ;
GetWindowText(IDC_OCT, m_strOct);
if( 1 == sscanf(m_strOct.GetBuffer() , "%o", &m_uVal) {
sprintf(szBuf, "%x", m_uVal) ; SetWindowText(IDC_HEX, szBuf);
sprintf(szBuf, "%u", m_uVal) ; SetWindowText(IDC_DEC, szBuf);
} else {
SetWindowText(IDC_HEX, "error");
SetWindowText(IDC_DEC, "error");
}
}
}
------------
問題變成:這樣如果再多一個二進位、四進位、32 進位 UI
(這是引例,未來可能會擴充),這種設計模式不就變得很尷尬?
到時要再新增修改的東西不少?是否有改善空間?
目前想到的改善空間其實蠻有限的,
把 EN_SETFOCUS 全都引到同一 function 更新 flag, 但不見得比較方便 XD
還是其實這是省不掉的部份?
謝謝各位不吝賜教,感激不盡。
--
~ 這輩子與神手無緣
我只好當神獸了 ~
卡卡獸
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.74.188
推
03/10 08:51, , 1F
03/10 08:51, 1F
→
03/11 22:49, , 2F
03/11 22:49, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章