0

独自のメニューを作成することにしたグラフィカル アプリケーションを設計しています。このメニューをプラットフォームに依存しないようにしたいと思います。当面の間、私のメニューは主にいくつかのボタンで構成されます。私の問題には、ボタンがクリックされたときのイベントの処理が含まれます。私のジレンマは、それが存在するコンテキストについて「知っている」ボタンにあります。ボタンを作成してマウスイベントを処理する大きなコードがある場合、ある種の switch ステートメントが必要になるかもしれません。switch ステートメントは、クリックされたボタンを一意に定義したものに基づいて、適切なアクションを呼び出す必要があります。

この switch ステートメントは避けたいと思います。私の最初のアイデアは、各ボタンがクリックされたときに正しいアクションをやみくもに開始するために使用する関数ポインタを維持することでした。これにより、ボタン固有のコードが削除されます。しかし、ボタンにコンテキスト固有の情報 (関数ポインターなど) を含めなければならないことに不満があります。私はかなり経験が浅く、これが悪い設計と見なされるかどうか疑問に思っています。それにもかかわらず、ある種の switch ステートメントを必要とせず、優れた OOP 設計と見なされる方法でメニューを設計するにはどうすればよいでしょうか? ご希望のソリューションをお聞きしたいと思います。

前もって感謝します!

4

2 に答える 2

6

ライブラリを見てみましょう:

SPTK (Simply Powerful Toolkit) は、迅速かつ簡単なアプリケーション開発のための 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 の焦点の 1 つは、少ないコード行数でクロスプラットフォーム アプリケーションを迅速に開発できるようにすることです。イベント システムは、強力なコールバック メカニズムに基づいており、アプリケーションの設計をよりシンプルにし、読みやすく、論理的にします。

Ecere クロス プラットフォーム GUI アプリケーション アプリケーションを一度開発すると、軽量のランタイム環境とともにすべてのプラットフォームに展開されます。

wxWidgetsの紹介

ClassLib、C++ クラス ライブラリ

libgm - Windows 用のミニ GUI ライブラリ

于 2009-01-16T11:58:42.187 に答える
2

Command Patternを見ることができます 。

コマンドをメニュー項目に関連付けることができます。コマンドには、実行するコードが含まれます。

于 2009-01-16T11:33:00.403 に答える