メニューから選択してある画面を表示→閉じる→再度選択→という処理をしたとき
再度選択したとき画面が表示されません。
以下のように処理していますが
画面が表示されているというステータスがかえってくるので
回避できません。
しばらく時間がたつかアプリを再起動するとできます。
原因がわからないので教えて下さい。
/*メニューからダイアログボックス表示 */
/*******************************************/
void CMainFrame::OnTyo01()
{
if (ChkDBOpen(this) == false){return;}
if(pTyo01->GetSafeHwnd())
{
if(::IsWindow(pTyo01->m_hWnd))
{
if(pTyo01->IsWindowVisible())
{
pTyo01->SetForegroundWindow();
//pTyo01->DestroyWindow();
return;
}
}
}
//生成
pTyo01 = new CSoc_Tyo01(this);
pTyo01->ShowWindow(SW_SHOW);
}
/*メニューからダイアログボックス表示 */
/*******************************************/
void CMainFrame::OnTyo01()
{
if (ChkDBOpen(this) == false){return;}
if(pTyo01->GetSafeHwnd())
{
if(::IsWindow(pTyo01->m_hWnd))
{
if(pTyo01->IsWindowVisible())
{
pTyo01->SetForegroundWindow();
//pTyo01->DestroyWindow();
delete pTyo01;///////////追加
return;
}
}
}
else{////////////追加
//生成
pTyo01 = new CSoc_Tyo01(this);
pTyo01->ShowWindow(SW_SHOW);
}////////////////////////////////追加
}
ですかね。(やってみてません。)
はずしているかもしてませんが...
pTyo01の生成は別の場所でやったほうがよさそうです。
コンストラクタとかOnCreateとか。
なぜ動的に呼んでいるのかも解りません。
同じものを何回も呼ぶんでしたらメンバにしておけば
メモリアクセスの効率もいいんじゃないですか。
生成する前のpTyo01には何が入ってるのでしょうか?(?_?)
その無効そうなデータをGetSafeHwndとかで参照していいのでしょうか?(?_?)
「閉じる」処理にも問題がありそう。