2010-11-29 62 views
2

私はこの科目に関する質問はほとんどありません。
ボタン用のクラスを作成しましたが、クラスに問題があります。
問題:
1.ボタンをクリックしたときに呼び出される関数を作成したいのですが、クリックするとすべてのボタンが違うことになるという問題があります。だから私はどのように私はすべてのボタンのために別のことを行う機能を作成することができますか分からない。
私はどのように私のインターフェイスを設計すべきか分かりません。
あなたが私のGUIをどのように設計すべきかというアイデアをお伝えできれば幸いです。
これはC++ directxでGUIを作成するには?

class GUIButtons 
{ 
public: 
    GUIButtons(void); 
    ~GUIButtons(void); 
    void LoadMesh(string fileName, int startAnimation, LPDIRECT3DDEVICE9 d3ddev); 
    void Render(float timeElapsed, D3DXMATRIX *matWorld); 
    void EventProc(HWND hWnd, UINT msg, LPDIRECT3DDEVICE9 d3ddev); 
    void Picking(HWND hWnd, LPDIRECT3DDEVICE9 d3ddev); 
private: 
    CXFileEntity *Button; 
}; 

EDIT 2私のボタンのクラスです:
Guysが、これは可能ですか?
私は2つの関数を作成し、もう1つは関数を作成します。
[OK]を、私はonClick()機能のためにこの方法を使用する必要があります。この

void a() 
{ 
    .... 
} 
void b() = a; 

EDIT 3のような
何か。

void Onclick(void(*fun)) 
{ 
    fun(); 
} 

私はそれが関数を呼び出すよりも、OnClickに関数を渡します。
この方法を使用する必要がありますか?

+0

あなたはすでにMicrosoftプレゼンテーションファンデーションを使用しないでください – chrisaycock

+0

ダイレクトフルスクリーンでは、Windows Presentation Foundationを使用できません – Ramilol

+0

2回目の編集で書き込んだものは不可能です。しかし、関数ポインタを使うことができます。しかし、真剣に、クラス/多型を使用する方がより良い、より安全で、よりエレガントであり、あなたはそれを行うことでもっと学びます:) – Lagerbaer

答えて

3

利用継承/多型:基底クラスはGUIButtonsあり、そしてすべての新しい個々のボタンは、その基地CLASEから派生:

class MyButton : public GUIButtons { ... } 

、[OK]をクリックしますのための機能は、仮想メソッドonClick()または何で来ます。

もっと詳しく:

class GUIButtons 
{ 
    ... \\ lots of stuff 
    virtual void onClick() { }; 
}; 

class CloseButton : public GUIButtons 
{ 
    ... 
    virtual void onClick() 
    { 
    //code to close window 
    } 
}; 

class SettingsButton : public GUIButtons 
{ 
    ... 
    virtual void onClick() 
    { 
    //stuff to open settings menu 
    } 
}; 
+0

私は混乱しています。私は2つのボタンを作成したとしましょう。最初のボタンをクリックすると、2番目のボタンをクリックするとメッセージボックスが表示されます。一つの機能でそれをどうやってやろうとしていますか? – Ramilol

+0

私は私の答えを編集しました。非常に単純な代替(強力ではない)として、ボタンアクション(CLOSE、MESSAGE、NEW_GAME、...)のenum変数を使用し、ボタンがクリックされたときに呼び出される関数でswitch文を使用できます。 – Lagerbaer

+0

すべてのシナリオでOnClick()の定義を持つことは、GUIライブラリの仕事ではありません。ライブラリは、ウィジェットを使用するアプリケーションが望みながらそれを処理できるように、インタフェースを提供する必要があります。 – yasouser

1

ボタンのクリックは、アクション/イベントです。クリックアクションをクラスとしてカプセル化できます。このアクションは、ボタンウィジェットを使用するアプリケーションによって解釈され、異なる方法で使用されます。 guiライブラリは、関連情報と共にボタンがクリックされたことを通知する必要があります。例としてQtやGtk +のような一般的なGUIライブラリを参照して、GUIイベントなどの実装方法を知ることができます。

関連する問題