• ベストアンサー

MFCでSDIからダイアログの呼び出し

n_nの回答

  • ベストアンサー
  • n_n
  • ベストアンサー率80% (4/5)
回答No.1

1.まず作成したダイアログに対応したクラスを作成します。   これをCSampleDlgとします。   (クラスウィザードを使えば楽でしょう) 2.メニューが選択されたとき、以下の処理を入れればモーダルで   ダイアログが表示されます。   {     CSampleDlg dlg;     dlg.DoModal();   }

coolguys
質問者

お礼

普通どおりでモーダルを 切り替えるだけでいいんですか。 むずかしいことではなかった。

関連するQ&A

  • SDIのコントロールを隠す

    Visual C++ .NET2003で勉強中の初心者です。 参考書を見ながらSDIでプログラムを作成しています。 いろいろコントロールをつけたりしているのですが, メニュー等を使用しておらず,ダイアログベース で作成したプログラムみたいですが配布を考えています。 以下について教えてください。 ・不要な(まだ使用していない)メニューやツールバーを 非表示するにはどうするのがベストでしょうか? ダイアログベースのような画面にしたいです ・作成したコントロールを無効(見えない動かない)にするにはどうすれば良いのでしょうか? 配布時は無効,個人的に利用するときは有効としたいので,削除できません。 よろしくお願いします。

  • 複数のダイアログの作成について

    環境 WIN98 VC++6.0 MFC SDIにて 1.メニューの”ダイアログ作成”をクリックすると、 void CMainFrame::OnKNew() { CInput dlg; int iID = dlg.DoModal(); } として、ダイアログを作成します。 2.次に、ダイアログのボタン押し下げにてダイアログを非表示にします。 void CInput::OnButton1() { ShowWindow(SW_HIDE); } このようなコードにおいて、一旦非表示にした後で、また”ダイアログ作成”メニューにてダイアログを作成した場合、 1.これは新たに2個目のダイアログが作られたのでしょうか? 2.それとも、単に最初に作られたダイアログが非表示から表示状態になっただけでしょうか? 3.それとも、最初のダイアログの上に2個目のダイアログが上書きされてしまうのでしょうか? 以上よろしくお願いします。

  • ダイアログの表示、非表示の切り替えについて

    環境 WIN98 VC++6.0 MFC SDIにて 1.ポップアップメニューの”ダイアログ作成”をクリックすると、 void CMainFrame::OnKNew() { CInput dlg; int iID = dlg.DoModal(); } として、ダイアログを作成します。 2.次に、ダイアログのボタン押し下げにてダイアログを非表示にします。 void CInput::OnButton1() { ShowWindow(SW_HIDE); } このようなコードにおいて、非表示状態での”ダイアログ作成”クリックでは非表示から表示に切り替えることを実現するにはどのようにすれば良いのでしょうか? よろしくお願いいたします。

  • MFCのSDIとMDIについて

    MFCを使用する場合、ダイアログベースしか使用してこなかったためMDIとSDIについてよくわかりません。 実行してみるとフォーム?エディタ?みたいなものが立ち上がりますが、あれはいったい何をするためのものなのでしょうか? 検索してみると描画とかアニメーションとかがキーワードで出てきますが絵を描くものなのですか??

  • VC++6.0 ダイアログの追加について

    現在,VC++6.0でSDIのプログラムを開発しています. このプログラムのメニューからダイアログを表示させるプログラムを開発したのですが,別のプラグラマーが開発したダイアログベースのプログラムを組み込むことは可能でしようか? また,将来的にダイアログを2つ出してその間で数値のやり取りをさせたいのですが,可能でしょうか? もし可能でしたら教えてください.よろしくお願いします.

  • Visual Studio .Net 2003 C++ ダイアログベース(MFC) でファイルを開くダイアログを付けるには

    Visual Studio .Net 2003 C++ ダイアログベース(MFC) で あるボタンを押すと「ファイルを開く」ダイアログを 新たに表示させ、そこで選択したファイルの場所を 返すようにしたいのですが、可能でしょうか? 可能ならばその方法も教えていただきたいです。 (プログラムにあまり詳しくないので、 やや詳しく書いていただけるとありがたいです。)

  • MFC、ダイアログベースでのモードレス作成

    現在、MFCで検索プログラムを作成しています。 始めはDoModalで作成していたのですが、ダイアログを閉じずに、ダイアログを複数並べて見たいという意見が出た為、モードレスで作成し直そうとしたところ、ダイアログが現れてくれません。 インターネットで見つけたソースを試してみたのですが、上手くいきません。 どなたか教えて頂けますか? =ダイアログに移るボタンコードに= CDlg1 dlg; dlg.Create(IDD_DIALOG1, this); dlg.ShowWindow(SW_SHOW); (dlg.DestroyWindow();は他に記述) 1. 上記では、ShowWindowに0が返ってしまい、一瞬ダイアログが映って 消えてしまいます。Createは1が返ってるのでいいかと思いますが…。 2. あと、違うソースで試したところ、ダイアログは表示できるものの、 一回消してしまうと、もう一度ボタンを押しても再度は表示されません。 しかも、Destroy()を設定したOKボタンでは強制終了となってしまいます。 モードレスで作成すると、一回そのダイアログを消してしまうと再度表示ができないのでしょうか? モードレスってただ他の処理ができるというだけで、そのダイアログを何枚も表示させておくことはできないのでしょうか? 3. このダイアログにjpegファイルを表示させているのですが、ダイアログベース・htmlView以外で表示させれる方法がありましたら教えて下さい。 よろしくお願いします。

  • ダイアログのボタンが押された時に、その「ボタン」のあるダイアログと、すでに表示されている他のダイアログを消したいです

    Win2000/MFC/ダイアログベース で作業しています。初心者です(^^;) Aというダイアログで「あるボタンa」を押してDoModalでBというダイアログを表示させ、Bダイアログで「あるボタンb」を押してDoModalでCというダイアログを表示させ、Cダイアログで「あるボタンc」を押した時にBダイアログとCダイアログを閉じたい(消したい)のですが EndDialogで消せません DoModalの戻り値をret_b,ret_cとした場合 EndDialog(ret_c); EndDialog(ret_b); としたのですが。。。 やり方がおかしいのか、よくわかりません・・ 初心者でもわかりやすいお返事お待ちしています(^^;)

  • ダイアログ・ベースにBitmap登録

    「工学社 Visual C++ .NET ゲーム制作教科書」 で学習している初心者です。 ダイアログ・ベースのプログラムで,背景に 画像を使用する例題があります。 そこで リソースの追加→Bitmap→インポート→ファイルの選択 として登録を行うのですが,うまくいきません。 エラーは発生していないのですが,リソースビュー に登録されていません。 また, リソースの追加→Bitmap→新規作成 とした場合は,リソースビューにうまく登録されています。 原因・解決方法が分かりましたら教えてください。 バージョンは,Visual C++ .NET 2003, MFCアプリケーションのダイアログベースで新規作成しています。 よろしくお願いします。

  • VC++.NET DLLからのダイアログの表示

    こんばんは。 VC++.NETでDLLを作成しました。 内容はダイアログを表示させるだけの単純なもので DLLの種類はMFC拡張DLLで作成しました。 (CDIALOGを継承したクラスTESTDIALOGのコンストラクタ、デストラクタがあるだけのもの) これをテスト用の単純なMFCアプリケーションで呼び出したところ ダイアログを表示させることができましたが 別の複雑なアプリケーション(DLLからDLLを呼ぶなどしている)で 呼び出したところダイアログが表示されません。 コンパイルエラーなどもでないし 何がいけないのか分かりません。 呼び出し側ではメニューにイベントハンドラを作ってそこで TESTDIALOG dlg; dlg.DoModal(); としているだけなのですが・・・ (デバッガで追ったところMFCのdlgcore.cppのCDialog::DoModalの m_lpDialogTemplateNameが不適切なptrとなる辺りに原因はありそうなのですが何故そうなるのかわかりません。) どなたかダイアログが表示されない原因がお分かりになる方 よろしくお願いします。