2

申請書を書きました。APP という名前のクラスがあり、ウィンドウへのハンドルがあり、その中にメッセージループがあり、これらすべてのものがあります。

このクラスのいくつかのオブジェクトを「実行」することを目的としており、それぞれが標準ウィンドウに必要な一連の変数に基づいた独自のウィンドウを持っています。

メッセージ ループはパブリックな使用が許可されており、RunMessageLoop メソッドによって実行されます。int nCmdShow - もちろん、ウィンドウの表示方法を伝えるために使用されます。

今、私はこのようないくつかのオブジェクトを作成すると:

vector <APP *> App;
for (int i=0; i<3; i++)
{
    App.push_back(&APP(nCmdShow))
    App[i]->RunMessageLoop();
}

プログラムは、各メッセージ ループが終了するのを待ってから、別のループを開始します。

私はこのようにすることを考え出しました:

vector <APP *> App;
for (int i=0; i<3; i++)
{
    App.push_back(&APP(nCmdShow))
}
for (int i=0; i<3; i++)
{
    App[i]->RunMessageLoop();
}

起動時に実行したいウィンドウの数がわかっている場合は、問題ないようです。

しかし、他のウィンドウから完全に独立して、新しいウィンドウを動的に作成する方法がわかりません。メッセージ ループを呼び出し、メッセージ ループを終了せずにすぐに WinMain() に戻る必要があります。

APP クラスの 1 つのインスタンスごとに各スレッドのマルチスレッド アプリについて考えました。ただし、マルチスレッド アプリの作成方法はわかりません。

可能な解決策のアイデアはありますか?

4

2 に答える 2

0

_beginthreadex実行する必要があるウィンドウの数に等しいスレッドを作成します。次に、スレッド プロシージャでメッセージ ループを実行し、すべてのスレッドが終了するまで待ちますWaitForMultipleObjects

于 2013-05-15T12:35:56.260 に答える