ATLコンポーネントを作成した後、簡単なATLオブジェクトを追加ダイアログリソースを追加し、初期化関数に応答せず、何のm_hWndをハンドルを見つかりませんでした。
そして、ダイアログリソースを追加し、ATLコントロールを追加した後、ATLコンポーネントを再作成し、そこにハンドルm_hWndを、まだ初期化関数に応答しない、奇妙で、他のほとんどすべてのメッセージマップは、あります!
ときに古いプロジェクト開いたところ、メッセージマップ
CHAIN_MSG_MAP(CComCompositeControl <T>)//旧
新しいプロジェクトとの違いがあります
CHAIN_MSG_MAP(CComControl <T>)//新
だから、ccomcontrolの種類を確認し、新しい世界を発見しました:
ダイアログボックスには、ハンドルとm_hWndをしています
公共CAxDialogImpl <T>、
それは問題ではありません
しかし、理由のは、継承されました
公共CComControl <T>
同時に、
公共CComCompositeControl <T>
これは、前出のエッセイ、このような使用は非常にトリッキーCComControl <T>から継承された、とされます。
メッセージ鎖は、初期化に応答して、CComCompositeControl <T>を置き換え、それらのソースを表示した後、そのような実装が示されているのOnInitDialog