フォームの表示

[戻る]
りり 2002/05/27(月) 19:29:46
はじめまして!!
りり@VC++初心者です。

MFC AppWizard(exe)をウィザードにて作成します。
--------------------------------
    アプリケーションの種類:SDI
    基本クラス:CFormView
--------------------------------
あるイベントでフォームAを表示したいのですが上手くいきません。
現象として一瞬だけフォームAが表示されるのですが、直ぐに消えて(後ろに隠れてる?)
しまします。ソースコードは以下の通りです。
void CMainFrame::OnOK() 
{
    int        iRet;        //DoModal()の戻り値
    
    CDlgSetup     dlg;
    iRet = dlg.DoModal();    // フォームAを表示    
}
何か少しでも情報が御座いましたら教えて頂けないでしょうか。

TAD [E-Mail] 2002/05/28(火) 03:14:30
ダイアログがすぐに消えるということですが、DoModal がすぐに終了してしまうということで
しょうか?
DoModal にブレークポイントを設定し、ステップ実行(F10)で確認できると思います。

すぐに終了してしまう場合、CDlgSetup クラス (特に OnInitDialog)に問題があるのと思いま
す。確認してみてください。

また、解決法の1つとして、CDlgSetup のコンストラクタに親ウィンドウのポインタを渡す
と、うまく動作するかもしれません。

CDlgSetup dlg(this);
iRet = dlg.DoModal();

りり 2002/05/28(火) 10:30:45
TADさん返答ありがとうございます。

ステップ実行したところすぐに終了してしまいます。
通常の"Dialogの挿入"で作成したものに関しては上手くいくのですが、
もともと生成されているDialog(CFormView)の"コピーの挿入"だと上手くいきません。

何かわかる事があれば
返答の程、宜しくお願い致します。

dairygoods 2002/05/28(火) 11:43:29
フォームのプロパティで[スタイル]が[チャイルド]になっていませんか?
[ポップアップ]にしないと、ポップアップ表示できません。
(CFormViewの場合はメインウィンドウの中に表示されるので
 [チャイルド]スタイルになっています。)

りり 2002/05/28(火) 14:01:07
[[解決]]
dairygoodsさんありがとうございます。
まさにその通りでした。

古いスレッドには追加発言できません。