所以,我正在使用DirectX 9和C++進行簡單的遊戲。我查看了SDK的GUI,但我認爲我可以實現更簡單的事情。C++ GUI Events/Messaging Design
所有我想要的是窗口,標籤,按鈕,文本框和複選框。
我創建了一個基類GUIObject,它們都從中繼承而來。它包括大小和焦點等基本知識。然後派生類,例如GUILabel,都定義了render(),update()和whatnot。
我的問題是如何處理事件,如點擊?我使用GUILabel :: Click()來定義基於當前實例的文本成員值的所有可能性。它感覺不對,我意識到需要點擊的每個標籤都必須在GUILabel類中定義。我想將其移至每個遊戲狀態的代碼。
所以,我簡單地嘗試讓GUILabel :: Click()將函數指針作爲參數。但是後來我意識到我需要將狀態的類成員方法設置爲靜態(不是真的可行,除非其中的所有內容都是靜態的,對嗎?),或者也將其傳遞給GUIObject類。這是要走的路嗎?
我可以在遊戲狀態中定義GUILabel的派生(或按鈕,或whatnot),只是覆蓋我需要的任何操作?然後在那個狀態下做那些我需要的任何控制?
什麼是實現事件處理的正確方法?
我想知道怎樣才能像Java的Swing中,在我的情況下,遊戲狀態從一些GUI元素派生設計這個(比如窗口),並且所有動作定義在他們自己的方法中,並通過(使用boost庫,希望)作爲回調。我會看看這是怎麼回事。我不太喜歡這一點,並試圖破解它以獲得遊戲的肉,但看到大部分遊戲取決於此GUI交互,我想有一個小小的規劃會有很長的路要走...... – Nick