1

私はMFCが初めてなので、ご容赦ください。デュアル スクリーン モニターに全画面表示されるダイアログがあります。このダイアログは、別の非モーダル ダイアログ内でインスタンス化されます (ボタンがクリックされたとき)。何かのようなもの:

void MyCParentDlg::OnBnClickedButton1()
{
        dlg2 = new MyChildNonModalDlg();
        dlg2->ShowWindow(SW_SHOW);
}

OnInitDialog()of でMyChildNonModalDlg、がShowWindow(SW_MAXIMIZE)呼び出されて、ダイアログが枠なしの全画面表示になります。現在、内部にボタン コールバック イベントがありますMyChildNonModalDlg

void MyChildNonModalDlg::onBnClickedBut2() {
    // Display images on the dialog one by one for a very long time 
}

が実行されてonBnClickedBut2いて、ダイアログが継続的に更新されているときに、マウスでダイアログの外 (他の画面など) をクリックすると、ダイアログがフォーカスを失ったときにフリーズします!

これはおそらくマルチスレッドで修正できるものであり、内部のプロセスOnBnClickedBut2()はスレッド内で実行する必要がありますが、スレッドについてほとんど知らない人として、誰かが私を正しい方向に向けるか、実行できるコード例を提供できますか?これ?

4

1 に答える 1

0

AfxBeginThread内に新しいスレッドを作成するために使用しますonBnClickedBut2。UI イベント ハンドラーをブロックすることは想定されていません。あなたが今それを手に入れたことを願っています。

于 2012-09-04T05:46:28.817 に答える