親ダイアログを非表示にしながら、モーダルダイアログボックスを一度に1つずつ作成するC++MFCアプリケーションを構築しています。Visual Studioでデバッグするときにブレークポイントに到達したときに、新しく作成されたモーダルダイアログを表示したいと思います。ただし、ブレークポイントに到達すると、ダイアログボックスの内容は表示されなくなります。ボックスは単に白くなるか、その上に表示されている画像を保持します。プログラムが再開されるとダイアログは正常に表示されますが、プログラムがVisual Studioデバッガーによって「一時停止」されている間、ブレークポイントに到達したときにダイアログボックスを表示できる必要があります。
2 に答える
これを行うことはできません。ダイアログのコンテンツを再描画するには、プログラムが実行されている必要があります。ブレークポイントで停止している場合は、実行されていません。
これはおそらく、Visual Studioとプログラム共有画面スペースがあり、VisualStudioがプログラムの上に表示されるためです。プログラムを前面に出すときは、再描画する必要があります(ただし、ブレークポイントにあるため再描画できません)。
最初に頭に浮かぶのは、別のモニターを入手し、Visual Studioとプログラムが別々のモニターで実行されていることを確認することです。そうすれば、プログラム自体を再描画する必要がなくなり、以前の状態を確認できます。ダイアログ上。
または、2台のコンピューターを取得し、一方から他方にリモートデバッグします。この場合も、プログラムはそれ自体を再描画する必要がないため、以前に何があったかを確認する必要があります。
もう 1 つできることがありdialog.Invalidate(); dialog.SendMessage(WM_PAINT);
ます。ブレークポイントの後に一時的に配置し、Visual Studio とダイアログが重なっていないことを確認してから、ペイント メッセージをステップ オーバーします。ダイアログが空白の場合は、入力する必要があります。
リモート デバッグの設定には多くの落とし穴がありますが、一度コツをつかめば非常に役立ちます。それは間違いなくあなたの現在の状況を処理し、環境の準備が整うと、将来のバグをより迅速に解決できるようになります. 私は何度も問題にぶつかり、「リモート デバッグ環境が良ければ A を実行するのに、代わりに劣ったソリューション B を最初に試す...」と言いました。