私はこれが多くの方法で尋ねられたのを見ましたが、実際に機能するコードスニップを見たことはありません.
新しいウィンドウとメッセージ ループを使用して新しいスレッドを作成するという素朴な試みを試みました。ウィンドウを開いてそのメッセージを処理する必要がある関数があり、既存のメッセージ ループがない (および他のウィンドウがない) または通常の mfc メッセージ ループまたは WTL メッセージ ループを使用してアプリケーションから呼び出すことができる環境で実行する必要があります。AddMessageLoop とモジュールについていくつか見ましたか? しかし、それは主なアプリケーション用だったようです。いずれにしても、WTL モジュールがある場合とない場合があります。基本的なメッセージ ループを備えたスタンドアロン ウィンドウが必要です。ウィンドウがまだ開いていない状態で WTL クラスを渡すと、ループと同じスレッドでウィンドウが開きます。クラスオブジェクトも新しいスレッドで作成する必要がありますか?
// does not work....
static DWORD WINAPI MyRunThread(__in LPVOID lpParameter)
{
CMessageLoop theLoop;
WTLsubclass *nav = (WTLsubclass *) lpParameter;
nav->CreateWindow();
int nRet = theLoop.Run();
return nRet;
}
CreateThread(0,0,MyRunThread,&nav,0,0);