2009-01-16 88 views
0

我正在設計一個圖形應用程序,我決定編寫自己的菜單。我希望這個菜單能夠獨立於平臺。目前,我的菜單主​​要由多個按鈕組成。我的問題涉及單擊按鈕時處理事件。我的困境是,一個按鈕「知道」它所處的環境。在我看來,如果有一些較大的代碼創建按鈕並處理鼠標事件,則可能會出現某種類型的switch語句。 switch語句必須根據任何唯一定義的點擊按鈕來調用適當的操作。C++自定義GUI按鈕問題

我想避免這個switch語句。我的第一個想法是讓每個按鈕保持一個函數指針,當它被點擊時它用來盲目地啓動正確的動作。這將消除任何按鈕特定的代碼。然而,它讓我感到一個按鈕應該包含任何特定於上下文的信息(比如函數指針)。我相當缺乏經驗,我想知道這是否被認爲是糟糕的設計。無論如何,我怎樣才能設計我的菜單,而不需要某種類型的switch語句,並被認爲是良好的OOP設計?我想聽聽您的首選解決方案。

在此先感謝!

回答

2

你可以看看 Command Pattern

您可以將命令關聯到菜單項,該命令將包含要執行的代碼。

+0

謝謝,這完美地工作。 – Scott 2009-04-12 17:27:59

6

你看看庫:

SPTK(簡單而有力的工具包)是一個跨平臺的工具包,提供了快速簡便的應用開發了一套C++類的。它提供使用FLTK的GUI組件,並支持與GUI組件無縫連接的數據庫支持。

EGUI
http://www.codeplex.com/egui
http://torjo.com/egui/
http://msdn.microsoft.com/en-us/magazine/cc534994.aspx

NovaTK是一個面向對象的,跨平臺的GUI工具包。 NovaTK的重點之一是促進需要更少代碼行的跨平臺應用程序的快速開發。事件系統基於強大的回調機制,使應用程序設計更簡單,更易於閱讀和合理。

Ecere Cross Platform GUI Applications 開發應用程序一次,在輕量級運行時環境旁部署到所有平臺上。

介紹wxWidgets

ClassLib,A C++類庫

libgm - A mini GUI library for Windows