メニューから選択しても画面がでない(至急) – プログラミング – Home

メニューから選択しても画面がでない(至...
 
通知
すべてクリア

メニューから選択しても画面がでない(至急)


はなちゃん
 はなちゃん
(@はなちゃん)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

メニューから選択してある画面を表示→閉じる→再度選択→という処理をしたとき
再度選択したとき画面が表示されません。
以下のように処理していますが
画面が表示されているというステータスがかえってくるので
回避できません。
しばらく時間がたつかアプリを再起動するとできます。
原因がわからないので教えて下さい。

/*メニューからダイアログボックス表示 */
/*******************************************/
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);

}


引用解決済
トピックタグ
Dos
 Dos
(@Dos)
ゲスト
結合: 22年前
投稿: 1
 

/*メニューからダイアログボックス表示 */
/*******************************************/
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);
}////////////////////////////////追加

}

ですかね。(やってみてません。)


返信引用
Tonny
 Tonny
(@Tonny)
ゲスト
結合: 22年前
投稿: 32
 

はずしているかもしてませんが...

pTyo01の生成は別の場所でやったほうがよさそうです。
コンストラクタとかOnCreateとか。
なぜ動的に呼んでいるのかも解りません。
同じものを何回も呼ぶんでしたらメンバにしておけば
メモリアクセスの効率もいいんじゃないですか。


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 生成する前のpTyo01には何が入ってるのでしょうか?(?_?)
 その無効そうなデータをGetSafeHwndとかで参照していいのでしょうか?(?_?)

 「閉じる」処理にも問題がありそう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました