ฉันกำลังสร้างเกมง่ายๆ โดยใช้ DirectX 9 และ C++ ฉันดูที่ GUI ของ SDK แต่ฉันคิดว่าฉันสามารถใช้งานสิ่งที่ง่ายกว่านี้ได้
ทั้งหมดที่ฉันต้องการคือหน้าต่าง ป้ายกำกับ ปุ่ม กล่องข้อความ และช่องทำเครื่องหมาย
ฉันได้สร้าง GUIObject คลาสพื้นฐานที่สืบทอดมาทั้งหมด รวมถึงข้อมูลพื้นฐานเช่นขนาดและโฟกัสและอื่นๆ อีกมากมาย จากนั้นคลาสที่ได้รับ เช่น GUILabel ทั้งหมดจะกำหนด render(), update() และอะไรก็ตาม
คำถามของฉันคือจะจัดการกับเหตุการณ์เช่นการคลิกได้อย่างไร ฉันทำงานร่วมกับ GUILabel::Click() เพื่อกำหนดความเป็นไปได้ทั้งหมดตามค่าสมาชิกข้อความของอินสแตนซ์ปัจจุบัน รู้สึกผิดและฉันก็ตระหนักว่าทุกป้ายกำกับที่ต้องคลิกจะต้องถูกกำหนดไว้ในคลาส GUILabel ฉันต้องการย้ายสิ่งนั้นไปยังโค้ดของแต่ละสถานะเกม
ดังนั้นฉันจึงพยายามทำให้ GUILabel::Click() ใช้ตัวชี้ฟังก์ชันเป็นอาร์กิวเมนต์ในช่วงสั้นๆ แต่แล้วฉันก็รู้ว่าฉันจำเป็นต้องมีวิธีสมาชิกของคลาสของรัฐเป็นแบบคงที่ (เป็นไปไม่ได้จริงๆ เว้นแต่ทุกอย่างในนั้นจะเป็นแบบคงที่เช่นกันใช่ไหม) หรือส่งผ่านคลาส GUIObject ด้วยเช่นกัน นั่นคือทางที่จะไปเหรอ?
ฉันสามารถกำหนดที่มาของ GUILabel (หรือปุ่มหรืออะไรก็ตาม) ภายในสถานะของเกมและแทนที่การกระทำใดก็ตามที่ฉันต้องการได้หรือไม่ แล้วทำแบบนั้นกับการควบคุมใดก็ตามที่ฉันต้องการในสถานะนั้นเหรอ?
วิธีที่เหมาะสมในการใช้การจัดการเหตุการณ์คืออะไร?