[問題] MFC視窗元件重覆使用
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual C++ 2010 with MFC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
MFC
問題(Question):
工作上,我們寫了一些MFC Dialog Base的工具程式
這些程式很容易會用到類似的視窗元件,譬如
static edit static
具體來說就是這樣的東西
┌──┐
溫度 │ 32 │ 度
└──┘
當然不一定都是溫度,後面的單位也會改變
一隻工具程式裡,這樣的東西可能會有二三十組
很直覺的,一開始當然都是用MFC方便的精靈拉一拉
但MFC的精靈其實也不是那麼好用,特別在排版上…
到了後來,可能有了動態產生、移除的需求,所以寫了類似這樣的東西
class InfoBox
{
private:
CStatic m_Name;
CEdit m_Value;
CStatic m_Unit;
public:
InfoBox(CWnd *parent)
{
m_Name.Create(...);
m_Value.Create(...);
m_Unit.Create(...);
}
void SetValue(CString &value)
{
m_Value.SetWindowText(value);
}
}
把外層的Dialog當作Parent Window
我的元件做為Child Window貼上去
雖然是可以運作,但後來需求更複雜了
譬如說,隨著主視窗伸縮,這些元件也要跟著調整大小、位子
所以就要寫一些譬如 SetPosition, SetSize 之類的member function
然後手動的把三個元件搬來搬去、放大縮小
說真的寫起來很頭痛…
覺得這整個InfoBox繼承CWnd好像比較合理
但CWnd裡面的成員又一大堆,不知道怎麼著手…
另外,MFC的元件又很容易跟Resource ID綁在一起
如果要把這東西搬到別的Project去的話
又要擔心這裡動態產生的Resource ID,會不會剛好衝突
還有就是,可以的話我超想把這些工具用.NET改寫
可是想到這些舊的東西要重做,還有底層的Code要怎麼跟.NET溝通
又是另一個頭痛的問題了....
不知道像這種介面的重覆使用、排版等瑣碎問題
要怎麼處理比較省事呢?
我總覺得排版應該寫個迴圈就讓它們固定間隔排得整整齊齊才對
為什麼要用滑鼠在那邊拉來拉去搞半天呢…
但是MFC的介面想要完全只用程式碼,而不依賴Resource卻又很麻煩
偏偏Resource又遠不如XAML寫起來輕鬆愉快(這個比較有點殘忍XD)
好希望MFC可以有像.NET或Android那樣Layout系統… :(
(我知道CodeProject有,但用起來依然瑣碎…)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.92.122
推
06/28 23:14, , 1F
06/28 23:14, 1F
不,應該是我太懶惰了XD
.NET或者Android兩個系統聯手把我慣壞了...
推
06/28 23:47, , 2F
06/28 23:47, 2F
→
06/28 23:47, , 3F
06/28 23:47, 3F
我好像沒看過這個耶,大感謝!
推
06/28 23:49, , 4F
06/28 23:49, 4F
→
06/28 23:49, , 5F
06/28 23:49, 5F
推
06/28 23:57, , 6F
06/28 23:57, 6F
簡單到讓我好感動...(可是下班時間不想動腦XDD)
真不知道要怎麼表達我的感謝 XDDD
推
06/29 22:18, , 7F
06/29 22:18, 7F
→
06/29 22:18, , 8F
06/29 22:18, 8F
其實老闆沒差,不過我沒那種神力可以把所有的Tool都改成別的系統啊...XDDD
※ 編輯: james732 來自: 114.32.92.122 (06/29 22:39)
→
07/01 16:09, , 9F
07/01 16:09, 9F