既存の機能しているCOMイベントシンクの実装をリファクタリングしようとしています。イベントシンククラスはC++で記述されており、非推奨CComModule
のクラスを使用するDLLに存在します。リファクタリングの目的はCComModule
、新しいATL7.0クラスCAtlComModuleに置き換えることです。
既存の実装は、.cppファイルのどこかにグローバル変数を宣言します。
CComModule _Module;
ご覧のとおり、変数には通常の「魔法の」名前が付いてい_Module
ます。ただし、通常の初期化はありませんが、DLLプロジェクトにはへの呼び出しがCComModule::Init()
なく、COMオブジェクトマップもありません。イベントシンクは引き続き機能し、そのイベントハンドラメソッドは適切に呼び出されます。
CComModule
からへの移行方法に関するドキュメントがないCAtlComModule
ため、変数宣言を次のように素朴に変更しようとしました。
CAtlComModule _Module;
ただし、うまくいきませんでした。変更後、イベントシンクが機能しなくなりました。つまり、イベントハンドラーメソッドが呼び出されなくなりました。
移行するために実行することになっている手順を知っている人はいますCAtlComModule
か?これまでのところ、MSDNまたはGoogleを介してソリューションを掘り下げることはできませんでしたが、適切に表示されなかった可能性があります...
ところで:必要に応じて、イベントシンクの実装について詳しく説明できますが、これまでのところ、問題はこの領域にはないと感じていました。