0

新しいウィンドウを 1 つのベクトルで管理しようとしていますが、問題があります。私が入れなければならない作業ウィンドウクラスを作成するには

while( GetMessage( & Komunikat, NULL, 0, 0 ) )
{
    TranslateMessage( & Komunikat );
    DispatchMessage( & Komunikat );
}

このループ ウィンドウは、それらを破棄した後にベクターに追加されるためです。それに対処する方法は?


そのループを削除した後、子ウィンドウでのメッセージの処理に問題があります。エディットボックスに何かを書き込もうとすると、プログラムがクラッシュします(テキストを送信してもプログラムがクラッシュするため、それらを編集すると何かがあると思います)

4

1 に答える 1

0

問題は、メッセージ ループ内でメッセージ ループを実行していることです。ChatWindow コンストラクターは、ウィンドウを作成してからメッセージ ループを実行し、ウィンドウが破棄されるまで戻りません。

これを行う必要はありません。プログラムに必要なメッセージ ループは 1 つだけ (MainWindow にあるループ) で、スレッド上で現在開いているすべてのウィンドウのメッセージを取得してディスパッチします。

(参考までに、サンプル コードはhttp://pastebin.com/MzSEvmr0に投稿されています)。

于 2012-09-04T00:22:00.753 に答える