現象
MFCアプリケーションにおいて、1つのダイアログ オブジェクトを繰り返し利用すると、タッチディスプレイ利用時に、アプリケーションが強制終了する場合があります。
原因
次のコードのように、1つのダイアログ オブジェクトを繰り返し利用すると、オブジェクトが持つ情報とウィンドウの情報の整合性が無くなり、アプリケーションが強制終了する現象が発生します。
ダイアログの作成と表示の例
===================
・ クラスのメンバ変数としてダイアログを作成します。
CSampleDlg m_Dlg;
・ ダイアログ オブジェクトを繰り返して使用します。
void CSample::OnBnClickedOk()
{
m_Dlg.DoModal();
}
解決方法
ダイアログ オブジェクトは、利用する度にスタック上に作成して下さい。この方法で利用する場合は、オブジェクトとウィンドウ情報が正しく紐付くため、アプリケーションが強制終了することはありません。
ダイアログの作成と表示の例
===================
void CSample::OnBnClickedOk()
{
CSampleDlg dlg;
dlg.DoModal();
}
状況
この動作は、MFC の仕様に基づく動作です。