none
スクリーン及び親フォーム内のサイズを知りたい RRS feed

  • 質問

  • また。お世話になります。

    MDIアプリケーションを作成中なのですが、プログラム起動時に、現在のモニター解像度に合わせ、シクリーンの最大サイズを

    取得したいのですが、GetSystemMetrics(SM_CXFULLSCREEN);では、コンパイルエラーになってしまいます。

    また、親フォームの中にいる子フォームも親フォームの内側のエリアの位置サイズを取得したいのです。

    どうすればよいのでしょうか?

    宜しくお願い致します。

     

    2007年10月29日 4:58

回答

  •  yo1 さんからの引用

    MDI親フォームのリソースを色々いじりたい

     

    ダイアログバーを作って、親フレームにくっつけるってのは駄目ですか ?

    とりあえず、ダイアログバーを調べてみてください。

     

     yo1 さんからの引用

    また、MDI子フォームも色々コントロールを配置して色々いじりたいのです。

    ・リストを表示する子フォームを作成したり。

    ・グラフを表示する子フォームを作成したり。

    リソースエディターで色々できる、子フォームを何種類か作り表示させたいのです。

     

    この辺りは参考になりませんか ?

    http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_MDI1.html
    CMultiDocTemplateについて調べてください。

     

     yo1 さんからの引用

    ・この子フォームにDataGridViewを使いたいのに、コントロールリストが選択不可状態なのはどうしてか?

     

    どうしてか ? と言われれば、フォームのコントロールだから。 でしょう。

    MFCは.NETのフォームではありません。

     

    MFCに、VCのコントロールとか.NETのコントロールを乗せようと思うと、一筋縄では行かなかった気がします。

    ActiveXコントロールなら簡単に乗せられますので、代替案を考えては ?

     

    2007年11月1日 5:25

すべての返信

  •  yo1 さんからの引用

    プログラム起動時に、現在のモニター解像度に合わせ、シクリーンの最大サイズ

    「スクリーン」ですよね?

     

     yo1 さんからの引用

    取得したいのですが、GetSystemMetrics(SM_CXFULLSCREEN);では、コンパイルエラーになってしまいます。

    再現コードも、エラーの内容もなしで、一体、どうやって答えろと?

     

    ところで、単に、親フォームを最大化するだけでは、ダメなんですか?

     

     yo1 さんからの引用

    また、親フォームの中にいる子フォームも親フォームの内側のエリアの位置サイズを取得したいのです。

    親フォームのオブジェクトに対して、CWnd::GetClientRect() かな?

    2007年10月29日 6:33
  • 質問の仕方が不適切ですみませんでした。

    回答有難う御座います。

    Windowsフォームで作成していて、気づいたのですが、MFCでプログラムを作成する時と比べて

    すごく大変な作業だと感じました。

    MFCでMDIプログラムが作成できればいいのですが・・・・・

    でも頑張ります。

    本当に有難う御座いました。

     

     

    2007年10月29日 6:52
  •  yo1 さんからの引用

    MFCでMDIプログラムが作成できればいいのですが・・・・・

    失礼。MFCだと、思い込んでいました。

     

    # MFCで、できるんですけどね。

    放置スレ(↓)を再開すれば、みなさん、助けてくれると思うんですが。

    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2325137&SiteID=7

    2007年10月29日 8:16
  • はい、ご指摘ありがとうございます。

    ご指摘のスレを再開しました。

    MFCで、できるのですか!それは凄いです。

    有難うございます。

    それは、コンテナを使う方法なのでしょうか?

    1つコンテナフォーム(親フォーム)を作成して、

    以下のコードを記述してコンパイルすると、エラーになってしまいます。

       DataMain^ mDataMain = gcnew DataMain();
       mDataMain->MdiParent = this;
       mDataMain->Show();
    どうか、MFCでMDIフォーム親子関係の作成方法を教えてください。

    宜しくお願い致します。

     

     

    2007年10月30日 1:25
  •  yo1 さんからの引用

    ご指摘のスレを再開しました。

    とりあえず、カキコしました。全然、アドバイスになっていなくて、申しわけありませんが。

     

     yo1 さんからの引用

    MFCで、できるのですか!それは凄いです。

    有難うございます。

    それは、コンテナを使う方法なのでしょうか?

    1つコンテナフォーム(親フォーム)を作成して、

    以下のコードを記述してコンパイルすると、エラーになってしまいます。

       DataMain^ mDataMain = gcnew DataMain();
       mDataMain->MdiParent = this;
       mDataMain->Show();

    これは、今書いているコード(C++/CLI & Windowsフォーム)のことで、MFCとは関係ない話ですよね?

     

     yo1 さんからの引用

    どうか、MFCでMDIフォーム親子関係の作成方法を教えてください。

    宜しくお願い致します。

    MFCを使いつつ、こんなコードを書いているかのように、読めちゃうのですが。
    2007年10月30日 3:13
  • 返信有難うございます。

    (1)

    現状を整理しますと、(C++/CLI & Windowsフォーム)でのMDIフォーム(親子関係)は解決しました。

    ですが、何かを追加する度に、*.hファイルにコードが自動生成され、*.cppは空白のままなのです。

    これで、いいのか不安でコードを書いてます。

     

    DataMain^ mDataMain = gcnew DataMain();
    mDataMain->MdiParent = this;
    mDataMain->Show();
    これは、問題なくコンパイルを通りました。

     

     

    (2)

    そして、これとは別にMFCで、上記同様の機能を実装できれば、その方が楽な気がしています。

    シングルドキュメントフォーム内に

    DataMain^ mDataMain = gcnew DataMain();
    mDataMain->MdiParent = this;
    mDataMain->Show();
    を記述したら、コンパイルが通りませんでした。

    ^がダメだとコンパイラが言ってました。

    gcnewもダメだとコンパイラが言ってました。

    MdiParentはプロパティ事態が無いとコンパイラが言ってました。

    Show();はメソッド事態が無いとコンパイラが言ってました。

     

     

    以上が現状です。

    別に、(C++/CLI & Windowsフォーム)でもいいのでしょうか?

    MFCの方が適切であれば、その実装方法を教えて頂けませんでしょうか?

    宜しくお願い致します。

     


    2007年10月30日 3:56
  •  yo1 さんからの引用

    (2)

    そして、これとは別にMFCで、上記同様の機能を実装できれば、その方が楽な気がしています。

    シングルドキュメントフォーム内に

    DataMain^ mDataMain = gcnew DataMain();
    mDataMain->MdiParent = this;
    mDataMain->Show();
    を記述したら、コンパイルが通りませんでした。

    ^がダメだとコンパイラが言ってました。

    gcnewもダメだとコンパイラが言ってました。

    MdiParentはプロパティ事態が無いとコンパイラが言ってました。

    Show();はメソッド事態が無いとコンパイラが言ってました。

    確認ですが、上記のコードを、MFC用のプロジェクトに記述して、コンパイルしようとしているのですよね?

    上記のコードは、C++/CLI用です。

    C++/CLIと、MFCとは、全く別の技術です。

    ごちゃ混ぜにできないことはないのかもしれませんが、私は、「絶対、やりたくありません。」

     

     yo1 さんからの引用

    別に、(C++/CLI & Windowsフォーム)でもいいのでしょうか?

    MFCの方が適切であれば、その実装方法を教えて頂けませんでしょうか?

    どちらがよいかは、好みと慣れ(とチャレンジ精神)の問題だと、思っています。

    2007年10月30日 12:59
  • はい、返信有難う御座います。

    そうですか、私は知らずにゴチャゴチャなコードを書いているのですね。

    原点に返って、質問なのですが、では、どうやってMFCでMDIプログラムを作れるのでしょうか?

    宜しくお願い致します。

    2007年10月31日 5:55
  •  yo1 さんからの引用

    原点に返って、質問なのですが、では、どうやってMFCでMDIプログラムを作れるのでしょうか?

    宜しくお願い致します。

     

    それが、

    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2325137&SiteID=7

    では ?

    2007年10月31日 9:42
  • 返信有難う御座います。今なんとなくわかりました。

     

    私が悩んでいたのは

     

    新規プロジェクト → MFCアプリケーション → マルチドキュメントを選択

    これがMFCのMDIアプリケーションなのはわかっています。

     

    ただ、これだと、勝手にMDI子フォームが作成され、勝手に表示され、勝手に何枚もフォームが開きますよね。

     

    私はMDIアプリケーションでやりたい事は、MDI親フォーム内にいくつかコントロールを配置したいのです。

    MDI親フォームのリソースを色々いじりたいのです。でも、リソースのリストには親フォームのリソースがないですよね。

     

    また、MDI子フォームも色々コントロールを配置して色々いじりたいのです。

    ・リストを表示する子フォームを作成したり。

    ・グラフを表示する子フォームを作成したり。

    リソースエディターで色々できる、子フォームを何種類か作り表示させたいのです。

     

    現状は、MFCクラスウィザードで基本クラスをCFormViewにすることで、1個だけはリソースをいじれる

    フォームを取得できた所までは出来ています。

     

    あとは、

    ・他のMDI子フォームをどう、クリエートすればいいのか?

    ・そのMDI子フォームをどう、表示すればいいのか?

    ・この子フォームにDataGridViewを使いたいのに、コントロールリストが選択不可状態なのはどうしてか?

     

    どうか、お知恵をお願い致します。

     

    2007年11月1日 0:49
  • 了解しました。

     

    であれば、C++/CLIの方が、よさそうです。

     

    無駄足を踏ませてしまい、申し訳ありませんでした。

    2007年11月1日 4:56
  •  yo1 さんからの引用

    MDI親フォームのリソースを色々いじりたい

     

    ダイアログバーを作って、親フレームにくっつけるってのは駄目ですか ?

    とりあえず、ダイアログバーを調べてみてください。

     

     yo1 さんからの引用

    また、MDI子フォームも色々コントロールを配置して色々いじりたいのです。

    ・リストを表示する子フォームを作成したり。

    ・グラフを表示する子フォームを作成したり。

    リソースエディターで色々できる、子フォームを何種類か作り表示させたいのです。

     

    この辺りは参考になりませんか ?

    http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_MDI1.html
    CMultiDocTemplateについて調べてください。

     

     yo1 さんからの引用

    ・この子フォームにDataGridViewを使いたいのに、コントロールリストが選択不可状態なのはどうしてか?

     

    どうしてか ? と言われれば、フォームのコントロールだから。 でしょう。

    MFCは.NETのフォームではありません。

     

    MFCに、VCのコントロールとか.NETのコントロールを乗せようと思うと、一筋縄では行かなかった気がします。

    ActiveXコントロールなら簡単に乗せられますので、代替案を考えては ?

     

    2007年11月1日 5:25
  • 皆さん本当に有難う御座います。

    参考になりました。

    どう作って行くかの方向性は決まりました。

    皆さんに感謝です。

    2007年11月1日 6:13