複数のフレーム (メイン ウィンドウでの Outlook のような動作、新しいフレームで作成されるメッセージ/予定ウィンドウ、またはマルチ フレーム同期のような Skype) を持つ MFC GUI アプリがあり、PostMessage の malloc されたデータが必要です。ウィンドウ階層を介して。
たとえば、文字列を取得し、それを _wcsdup し、PostMessage(WM_NEWSTRING, ...) を取得し、階層の深いところにあるコントロールがそれを処理します。または、サブスクライバーが存在しない場合、メッセージは消去されます。
私が今調べているのは、すべてのメッセージがアプリケーションスレッドに投稿され、スレッドがアクティブなフレームまたは最適なフレームを見つけてメッセージを渡し、フレームがメッセージをビューに渡し、ビューがメッセージをサブビューに渡すことです。 、メッセージを処理するビューがない場合は解放されます。
問題は、これらのチェーン コマンドを記述するのが非常に面倒なことです。これは、所有している各 CWnd クラスでメッセージ転送コードを複製する必要があるためです。同時に、メッセージをキャッチするウィンドウがない場合、誰かが無料で呼び出す必要があるため、リソースのクリーンアップはかなり不快です。したがって、誰かが常にそれをキャッチすることを期待して、余分な処理をせずに単にメッセージをメインのメッセージ ポンプに投稿することは、有効な方法ではありません。PostMessage は S_OK を返し、誰もメッセージを処理可能とは見なさず、ぶら下がったままにします。
私が探しているものに対するより良い、正しいアプローチはありますか?