質問

私は、プロジェクトのATLとWTLの組み合わせを使用していますが、次のようになりますCWindowImplから自分のクラスを、派生しています:

class CMyControl : public CWindowImpl<CMyControl>
{
public:
    DECLARE_WND_CLASS(_T("MyClassName"))
    ...
    BEGIN_MSG_MAP(CMyControl)
        ...
    END_MSG_MAP()
};

これは、すべて良いです、と私はコントロールのインスタンスを作成するためにCMyControl::Createを使用する場合、それはフードの下のように正常に動作し、CWindowImpl::Create機能は、(MyClassNameと呼ばれるこのケースでは)のWin32クラスを登録します。

しかし、それはこの動作がある - インスタンスが作成されたときのWin32クラスが登録されている - それは私に頭痛を引き起こしています。私は、私は、Win32のCreateWindowExコールを使用して、ウィンドウを生成する他のサードパーティのライブラリとクラス名を使用することができますので、アップフロントクラスを登録することができるようにしたいが、私はこれを行うための簡単な方法を見つけることができません。現在、私はstaticクラス名としてCreateWindowExを使用することによってこの問題を回避し、それに私のクラスを添付するCMyWindow::SubclassWindowを使用していますが、これはその場しのぎでます。

誰もが、実際にウィンドウを作成せずCWindowImpl派生クラスを登録する方法を知っているので、私は成功しCreateWindowExするクラス名を渡すことができますか?私はこの問題に遭遇して最初にすることはできませんようATLウィンドウでこれを行うための標準的な方法があったと思ったのでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top