0

機能する WndProc を備えた win32 ラッパー クラスがあります (静的な wndproc を使用してメッセージを WndProc メンバー関数に転送します)。

また、win32 ラッパー クラスのインスタンスを作成する別のアプリ クラスもあります。

アプリ クラスのユーザーが、OnMouseClick() や OnMouseMove() などのイベントを表す独自の関数を記述できるようにしたいのですが、これを機能させるには、win32 ラッパーからイベント関数を呼び出す必要があります。クラスの Wndproc (アプリ クラスの知識はありません)。

これを行う最善の方法は何ですか?各イベント関数へのポインターを win32 ラッパー クラスに送信し、ポインター経由で呼び出す必要がありますか? それとももっと良い方法がありますか?

4

1 に答える 1

0

クラスの構造とその目的が明確ではありません。それにもかかわらず、ラッパー クラスの典型的な推奨される構造は次のとおりです。

class BaseClass
{
public:
    virtual void OnMouseClick(...) { }   // Empty body
    virtual void OnMouseMove(...) { }   // Empty body
};

class AppClass : public BaseClass
{
public:
    void OnMouseClick(...) { AppCode }
    void OnMouseMove(...) { AppCode }
};

基本クラスは、静的 WndProc ハンドラーで Windows イベントを受け取ると、仮想メソッドを呼び出しています。これにより、アプリ コードの実行がトリガーされます。

于 2012-08-13T20:42:49.757 に答える