2010-12-14 7 views
1

私はCWndから派生したMFCコントロールクラスを作成しました。コントロールクラスを実装とパブリックインターフェイスに分割する方法は?

コントロールは最初から書き込まれ、子コントロールは使用されません。この単一のクラスは、状態のメンテナンス、ペイント、イベントへの応答など、すべてのコントロールロジックを実装します。

さらに、コントロールを使用するコードで使用するために、よりパブリックなインターフェイスが必要です。理想的には、これははるかに単純なインターフェイスでよりシンプルなクラスになるようです。しかし、同じウィンドウに関連付けられた2つのMFCクラスを持つことは、あらゆる種類の問題を引き起こすか、または可能ではないようです。

私は実際にこれにアプローチする最善の方法はわかりません。私はこのようなコントロールにシンプルなインターフェイスクラスを提供するのが最善の方法に関する考えに興味があります。

コントロールはライブラリなどにプリコンパイルされません。アプリケーションの一部としてコンパイルされます。

答えて

1

クラスを2つに分割してみてください。より複雑な実装クラスはパブリッククラスの子になります。

通常、別の純粋な仮想インターフェイスクラスを作成し、それをMFCに接続するために複数の継承を使用することをお勧めしますが、インターフェイス上で標準のCWndメソッドを使用できるようにしたいと考えています。

+0

私はそれのようなものです。 CControlのようなクラスを作成して、コントロールとのインターフェースに使うことができますし、CControlのようなコア機能を追加するCControlInternalのようなものを作成できます。どちらも同じウィンドウをうまく参照できます。 –

1

MFCインターフェイスは、実際にクラスを実装していないためシンプルです。パブリックAPI(C & WM)をラップするだけで、C++でのコーディングが容易になります。

たとえば、sendMessage hwnd WM_SetTextを編集フィールドに入力するか、CEdit(hwnd).setText()を使用して同じ操作を行うことができます。 インターフェイスクラスを実装の親にすることも、インプリメンテーションとのインターフェイスに参加するPIMPLモデルを使用することもできます。

+0

右、MFCのウィンドウクラスは、クラスを実装していませんが、私の場合は、 - それは問題です。私はクラス/サブクラスのアプローチはおそらく大丈夫動作すると思います。ありがとう。 –

関連する問題