タッチディスプレイ利用時に、MFCアプリケーションが強制終了する場合がある

現象

MFCアプリケーションにおいて、1つのダイアログ オブジェクトを繰り返し利用すると、タッチディスプレイ利用時に、アプリケーションが強制終了する場合があります。

原因

次のコードのように、1つのダイアログ オブジェクトを繰り返し利用すると、オブジェクトが持つ情報とウィンドウの情報の整合性が無くなり、アプリケーションが強制終了する現象が発生します。



ダイアログの作成と表示の例
===================

・ クラスのメンバ変数としてダイアログを作成します。 
CSampleDlg m_Dlg;


・  ダイアログ オブジェクトを繰り返して使用します。
void CSample::OnBnClickedOk()
{
  m_Dlg.DoModal();
}

解決方法

ダイアログ オブジェクトは、利用する度にスタック上に作成して下さい。この方法で利用する場合は、オブジェクトとウィンドウ情報が正しく紐付くため、アプリケーションが強制終了することはありません。


ダイアログの作成と表示の例
===================

void CSample::OnBnClickedOk()
{
    CSampleDlg dlg;
    dlg.DoModal();
}


状況

この動作は、MFC の仕様に基づく動作です。


プロパティ

文書番号:2909698 - 最終更新日: 2016/09/29 - リビジョン: 1

フィードバック