• ベストアンサー

【VC++2005(CLR)】ダイアログ呼び出し元ダイアログを手前に表示させたい

VC++初心者です。 現在、VC++ express edition、CLRプロジェクトでコーディングしております。 いろいろな方の力を借りて、モードレスでダイアログ(子ダイアログ)を 呼び出しだすことができました。ありがとうございました。 しかしながら、常にその子ダイアログが呼び出し元ダイアログ(親ダイアログ)の手前に 表示されてしまいます。 各ダイアログがクリックされるたびに、クリックされたダイアログが手前に表示する ようにできませんでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

回答を読んでいただいていますか? 親フォームとして設定しなければ、 >所有する側のフォームの背面に表示すること は可能です。 あとは、自力で親フォームを最小化/最大化/アイコン化したとき、子フォームの動きを処理すればいいだけです。 (親フォームが×ボタンだけであれば、メンバ変数になっているので、親フォームを閉じるときに、勝手に子フォームは閉じる)

yuki7091
質問者

お礼

ご指摘、ありがとうございます。 this->childForm_ = gcnew Form2(); this->childForm_->Show(this); と書いていたため、親ダイアログが前面に出てくれませんでした。 this->childForm_ = gcnew Form2(); this->childForm_->Show(); show()としたことによって、問題が解決しました。 ありがとうございました!

その他の回答 (2)

回答No.2

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.owner(VS.80).aspx より >gcnew Form2(this); という指定の場合はOwnerウィンドウになるので、そういう仕様になります。 gcnew Form2(); としても問題ないようであればそれでもいいでしょう。 つまり >所有している側のフォームと連動して最小化したり閉じたりします。 という動きではなくなる。

yuki7091
質問者

お礼

毎回、ご教授ありがとうございます。 http://okwave.jp/qa4865001.html で教えていただいたように、現在私は、 親ダイアログから子ダイアログを コントロール(開く、閉じる)をしています。 紹介されたページを拝見して、所有される側のフォームを 所有する側のフォームの背面に表示することはできないことを 初めて知りました。 これはVCの仕様なので、今回の私のやりたいことは実現できないよう ですね。何か良い方法はないのでしょうか。

回答No.1

 こんにちは。  クリックイベント内で、BringToFront()を呼び出して見てはいかがでしょうか。  http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form_members(VS.80).aspx

yuki7091
質問者

補足

ご回答、ありがとうございます。 実は私もクリックイベントの中に BringToFrong()を使って試してみたのですが、 やりたい事ができませんでした。 http://okwave.jp/qa4865001.html で教えていただいたように、親ダイアログから子ダイアログを コントロールしているので、できないようです。

関連するQ&A

  • 【VC2005(CLR)】モードレスで呼んだダイアログの閉じ方

    VC2005初心者です。 現在CLRのプロジェクトでコーディングしてますが、 モードレスで呼んだダイアログの閉じ方が分かりません。 ご存知の方、よろしくお願いします。 ちなみに自分自身のダイアログを閉じるのは this->Close(); なので、以下のように書いたのですが、閉じてくれません。 ※showFlag = 0;を大域変数で宣言しておきます。 AAA^ formAAA = gcnew AAA(); if(showFlag ==0){ AAA^ formAAA = gcnew AAA(); formAAA->Show(this); showFlag = 1; } else{ formAAA->Close(); showFlag = 0; }

  • 【VC++2005(CLR)】ダイアログ右上の最小化、最大化、閉じるボタンの制御の仕方を教えてください。

    VC++初心者です。 たびたび、お世話になっております。 現在、VC++2005 Express Edition、CLRのプロジェクトで コーディングしています。 基本的な質問だと思いますが、ダイアログ右上に配置される 最小化、最大化、閉じるボタンの制御の仕方を 教えていただけませんでしょうか。 具体的にはやりたいことは、以下のようなものです。 ・閉じるボタンを押されたら、MessageBoxを表示させる。 ・他のダイアログのボタンから別のダイアログの最大化ボタンが  押されたことと同じ動作をする。

  • 【VC2005】外部から呼ばれた複数のVCのEXEからそれぞれ1つのみのダイアログを出す方法

    VC超超初心者です。 タイトルの件、今までうんうん考えましたが、独力では厳しいので よい知恵(コーディング)を教えて頂けませんでしょうか? ************************************************ やりたいこと: ・プログラムAから、ShellExecute()を利用して、プログラムBを  複数起動します。(現在、このプログラムBをコーディング中です。) ・プログラムBにあるボタンを押して、  1つだけのダイアログCを出力させたいです。 (呼び出し元のプログラムBから自分の呼び出したダイアログCを  操作(拡大、閉じるなど)をしたいです。) 条件: ・プログラムBはモードレスでダイアログCを呼び出したいです。 ・プログラムBがダイアログCを既に呼び出していれば、ボタンをクリック  してもカウントせず、新たにダイアログCはつくりません。  (プログラムBの他のボタンは有効とします。) ・プログラムBで自分の呼び出したダイアログCが閉じられれば、  再度ボタンを押して、ダイアログCを呼び出せます。 ・複数のプログラムBが起動している場合、プログラムBは自分が  呼び出したダイアログCのみをコントロールします。 ************************************************ 私の環境 ・OS:WindowsXP pro ・VC2005 Express Edition ・プロジェクト種類:CLR お手数ですが、詳しい方いましたら、ご協力お願いします。

  • 【VC++2005(CLR)】ファイルが他で使用されていると、落ちてしまう

    VC++初心者です。 現在、VC++2005 express edition、CLRプロジェクトでコーディングしております。 質問のタイトルをもう少し具体的に説明しますと、 あるファイルを開きっぱなしにして、 そのファイルを読みにいこうとするとプログラムが落ちてしまいます。 これを回避するにはどうしたら宜しいでしょうか? もし、読みたいファイルが使用中でも、使用終了されたら、 すぐにそのファイルを読みに行くことは可能でしょうか? お手数ですが、よろしくお願いします。

  • 【VC++2005(CLR)】ラベルやテキストボックスの背景色を変化させたい

    VC++初心者です。 現在、VC++2005 express edition、CLRプロジェクトで コーディングしております。 ラベルやテキストボックスの背景色を変えるには どうしたら宜しいでしょうか。 以下のようにコーディングしたのですが、色が変わってくれません。 他に何か設定が必要なのでしょうか。 label->ResetBackColor(); label->BackColor.Red;

  • 【VC++2005(CLR)】1つのダイアログに複数のまとまったデータ群を載せたい

    VC++初心者です。 現在、CLRのプロジェクトでコーディングしています。 表題の件について、具体的にどのように設計していけばよいのか (画面設計で利用したほうがよいフォームの種類など) ご教授いただきたくお願いします。 (どんな方針で設計していけばよろしいでしょうか) (主に画面設計について伺いたいです。) やりたいことはこんなイメージの内容です。 *********************** ・1つのダイアログに複数の外国為替のデータを載せたい。 ・1つの国が持つデータは、その国の国旗画像データ、その日の最高値、最安値、平均値、現在値を表示させたい ・1つのダイアログに、20国のうち1~4つの国のデータを表示させたい。 ・1国表示なら、ダイアログ全体にさせたい ・2国表示なら、そのダイアログの上下にさせたい ・3,4国表示なら、上下左右を4分割させて表示させたい。 *********************** (画面設計では、Panelを使って国ごとに1つずつ割り当てて  あげればいいのかな、などと考えていますがどうでしょうか。  参考になるページを教えていただけると幸いです。)

  • 【VC++2005(CLR)】データセットのデータを直接変更したときのデータチェックについて

    VC++2005初心者です。 現在、VC++2005 Express Edition、CLRでプロジェクトをつくって コーディングしています。 CSVファイルをデータセットを使用して画面に表示していますが、 ユーザが直接、そのデータセットを編集できるようにしようと思います。 この場合、ユーザが入力したデータがそのセルに対して有効なセルか (型があっているか、などの条件を満たしているか)チェックを したいのですが、具体的にどのようにしたら宜しいでしょうか。 上記を内容に関連して、ユーザが新規行を追加した場合、 その行が有効なデータかチェックする方法を教えて頂けませんでしょうか。 お手数ですが、よろしくお願いします。

  • 【VC++2005(CLR)】フォームを拡大後、ボタンなどを均等に配置するには?

    VC++初心者です。 現在、VC++2005 express edition、CLRプロジェクトでコーディングしております。 現在フォームを拡大すると、拡大前と同じ場所にボタンや ラベルが配置されています。 (拡大後、右隅にラベル、ボタンが配置されます。) これをフォーム拡大と同時に、拡大後のフォームに拡大前と同じ間隔の 比率でボタンやラベルを均等配置するにはどうしたらよろしいでしょうか? これに付随して、フォームをある大きさまで縮小させたくありません。 それを実現するにはどうしたら宜しいでしょうか。

  • 【VC++2005(CLR)】lzh形式で、圧縮、解凍したい

    いつもお世話になっております。 VC++初心者です。 現在、VC++2005 ExpressEditon CLRプロジェクトで コーディングしいます。 あるボタンをクリックすることで、指定したファイルaaa.txtを lzh形式で圧縮するようにするには、どのようにしたら宜しいでしょうか。 そして、ある指定したファイルbbb.lzhを解凍するには どのようにしたら宜しいでしょうか。 お手数ですが、サンプルソースを紹介して頂きたくお願いします。

  • 【VC++2005(CLR)】動的にパネルやグループに含まれるボタン、ラベルを増やすには?

    VC++初心者です。 現在、VC++2005 express edition、CLRプロジェクトでコーディングしております。 いきなりですが、以下のようなイメージをコーディングしていきたい のですが、どうしたら宜しいでしょうか。 ************************************************ ・現在、グループボックスA(またはパネルA)にボタンA、ラベルA  を配置しています。 ・int iの値だけ、グループボックスA(それに含まれるボタンA、  ラベルA)を増やしたいです。 例:int i = 1;のとき グループボックスA1   int i = 2;のとき、グループボックスA1、グループボックスA2    という感じで増やしていきたいです。 ・グループボックスAを増やしていくと、フォームに入りきらなく  なるので、これを回避する方法はありますか? ************************************************ そもそもこれは、実現可能なのでしょうか?

専門家に質問してみよう