看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 剛剛憑空想了一下該怎麼寫一個 簡單的GUI API給其他人用 : 因為程式的flow是 Update -> Draw -> Update-> Draw : 使用者頂多在initial的那個block 寫GUI的排放方式註冊一些callback : 但是.... : Update裡面 可能使用者被迫寫 MyGUI.Update() : 幫她做一些滑鼠是否有點擊之類的偵測相對的GUI改變顏色 : 和一些更新 : 但是在Draw : 以我之前使用別人寫的簡單GUI的經驗 : 我似乎沒有在Draw函式裡手動呼叫 MyGUI.Draw().... : 我該怎麼偷偷的幫他在Draw裡面去呼叫我的MyGUI.Draw呢 : 一般該怎麼做到 : 謝謝!! Template Method。 class Update { public: void foo() { userDefiend1(); userDefined2(); ... MyGUI.Update(); } protected: virtual void userDefined1(); virtual void userDefined2(); ... }; 然後你的 API 就寫成只接受 (Update *) 這種 type 的參數, 這樣就能強制你的 user 繼承 Update 來自訂一些東西。 高興的話你也能一個自訂項目就寫一個 class。 想搞到更複雜的話也就只有 Command Pattern 了, 這樣它每註冊一個動作的時候, 你就可以幫它偷偷 push 一個 Update 的動作在後面, 最後 invoke 下去的時候就會是你想要的順序。 -- Ling-hua Tseng (uranus@tinlans.org) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: http://www.tinlans.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.109.191
QQ29:t大 可是我MyGUI.Draw該在哪裡偷寫阿? 04/26 01:07
QQ29:其實我是要用XNA 架構 他會呼叫update和draw...我想我只能 04/26 01:08
QQ29:讓使用者 手動呼叫MyGUI.Draw了耶?? 04/26 01:08