ここから本文です

解決済みの質問

知恵コレに追加する

VC++ タブコントロールについて。

a_vos_amours_myk0706さん

VC++ タブコントロールについて。

今、Form1に1ページ画面を作っています。
それを、タブを表示させて、今作っているForm1のページをタブ1に表示させたいと思っています。

タブコントロールを、Form1に配置してtabControl1_Click関数の中にForm1を表示させるというのを書くとタブコントロールが二重になってしまいますよね?
どこに配置し、どういう使い方をすればいいのですか?

補足
ありがとうございます
タブコントロールでタブが表示できるのかと思ってました…
特にタブコントロールにこだわりはないです
タブをつけて、Form1(今作っているページ)を表示させたいということです。

違反報告

ベストアンサーに選ばれた回答

abiko_tetuさん

TabControlは、フォームの上にTabControlを貼り付け、さらにその上に、ラベル等の各種コントロールを貼り付けるものです。
TabControl上にForm1を表示させるものではありません。
しかし、質問者さんの別の質問の

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1324801243

から言うと、本質問の内容の通り、TabControlからForm1を起動させたいのですね。
別の回答の方での回答の通りです。
その回答でForm2と記しているものをForm1にすれば、Form1を起動可能なはずです(無理なら、少し工夫する必要があるかも知れませんが)
ただし、それは本来の親フォームと同じ形(内部のコントロールの配置等が同じ)の新規フォームです。
形が同じだけであって、本来の親フォームその物ではありません。
本来の親フォームと、TabControlから起動するForm1を同じものにしたければ、Form1をどのプログラムからでも利用可能なグローバルな(おおやけな)オブジェクトにする必要があります。
すなわち、分散システムのサーバーにする必要があります。
サーバーと言いましても、「サーバー用の別のパソコンを用意する」という意味では無く、プログラム単位での話しです。
サーバーは、機能を他のプログラムから利用されるプログラムのことです。
クライアントは、サーバーを利用する側のプログラムのことです。


よって、回答スペースに制限がある知恵袋で回答する範囲ではありません。残念ながら。

具体的には、以下の知識が必要です。


.NETリモート処理

http://msdn.microsoft.com/ja-jp/library/72x4h507.aspx

「サーバーでの通信部」、また、「サーバー全般機能の枠組み」として.NETリモート処理という技術が必要です。


デリゲート(delegate)

http://msdn.microsoft.com/ja-jp/library/3z2x4f55(VS.80).aspx
http://msdn.microsoft.com/ja-jp/library/system.delegate.aspx

実際に機能をエクスポート(外部公開)するのに、デリゲートという技術が必要です。



実は、私は分散システム(サーバーの作成)は、まだ旧仕様のCOMの技術に頼っているので、新仕様のほうはあまり分かっていません。
しかし、幾つか.NETリモート処理を使ったプログラムも作っていますので、分かる範囲なら回答しますので、ぜひチャレンジしてみて下さい。
しかし、大変なので、取り合えず作成プログラムの仕様のほうは、妥協したほうが良い気がします。
サーバー化すれば、本件は何もかもうまく行くという保障はできませんが、少なくとも無駄にはならない技術です。
なお、「サーバー / クライアントは、プログラム単位」と前述しましたが、マシン単位でのサーバー / クライアントも.NETリモート処理を使えば可能です。


[補足の件]

タブコントロールは、タブを表示するものですよ。
おそらく、質問者さんは、コントロールの生成から全て、ソースでコードで記述しているのだと思います。
それで、勘違いされているのだと思います。
そうではなく、コントロールをデザイン画面上に貼り付けると、直ぐに分かります。
「ツールボックス」画面でTabControlを選択し、次に「Form1.h[デザイン]」画面中のフォーム上でドラッグすれば、タブコントロールが張り付きます。
そのタブコントロールの該当タブの上にラベル等の各種コントロールを貼り付けることによって、当初のForm1のようなデザインにして下さい。
タブコントロールによって、フォーム上の各種コントロール(ラベル等)が、タブという形式で整理されるだけです。
よって、見かけ上の問題であって、その上の各種コントロール(ラベル等)の使い方は今までのやり方と同じです。

  • 違反報告
  • 編集日時:2009/4/10 02:09:00
  • 回答日時:2009/4/4 06:25:14

この質問は投票によってベストアンサーが選ばれました!

この質問・回答は役に立ちましたか?
はい
いいえ

お役立ち度:お役立ち度 5点(5点満点中)2人中 2人が役に立つと評価しています。

回答ありがとうキャンペーン 回答してポイントを当てよう!! 2000名様に500ポイントプレゼント キャンペーンの詳細を見る ※回答することで自動的に応募となります。

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:C言語関連]

ただいまの回答者

18時35分現在

2988
人が回答!!

1時間以内に6,009件の回答が寄せられています。