あなたが説明したことをすることは確かに可能です。アプリケーション内で通信するためのカスタムメッセージを作成するために実際に何もする必要はありません。メッセージを送信するコードとメッセージを受信するコードが実際のメッセージ番号と一致していることを確認し、メッセージを使用してください。 Windowsが使用する番号のいずれとも重複しない番号。RegisterWindowMessage()関数がありますが、これはオペレーティングシステム全体で一意のメッセージ番号を取得するためにのみ必要であるため、プロセス間通信に使用されます。
これを実現する最も簡単な方法は、カスタムメッセージ番号を含むヘッダーファイルをどこかに置くことです。これは、WM_USERで始まり、次のように上に番号が付けられます。
#define WM_FIRST_CUSTOM_MSG (WM_USER+0)
#define WM_SECOND_CUSTOM_MSG (WM_USER+1)
WPARAMおよびLPARAMタイプは、「windows.h」を含めるときに定義されるため、システムごとに異なるタイプを持つことができます。32ビットオペレーティングシステムの場合、通常は両方とも32ビット整数です。テスト目的でメッセージを使用しているだけの場合は、通常はそれで十分であり、そこに好きなものを貼り付けることができます。ただし、実動コードの場合は、もっと注意する必要があります。WPARAMは実際には「整数のような」データ用であり、LPARAMは「ポインターのような」データ用です。たとえば、Win64では、LPARAMは64ビットポインタを保持するのに十分な長さですが、WPARAMは32ビット整数のみを保持します。整数とポインターだけでなく、より多くのデータを渡すには、lParamを使用して、すべての引数を含むある種の構造体にポインターを渡します。
そうは言っても、デバッグ出力を取得する複雑な方法のように聞こえます。OutputDebugString()API呼び出しを使用してみましたか?または、スレッドのprintf()呼び出しをデバッグしますか?