Form1のボタンクリックからForm2を呼び出すには
※C++Builderの場合
①Form1の実装部分(cpp)にForm2のヘッダーファイルをインクルードする。
#include "Form2.h"
②From1の実装部分(ボタンクリック関数の処理内)で、Form2のShow関数を呼び出す。Form2->Show();
※VC++の場合(2010で動作確認しました)
①Form1のボタンクリックの実装部分(Form1.h)にForm2.hをインクルードする。
#include "Form2.h"
②Form1の実装部分(ボタンクリック関数の処理内)でForm2クラスのインスタンスを生成する。
Form2^ f = gcnew Form2();
③②で作成したインスタンスからShow関数を呼び出す。
f->Show();
※思ったこと
VC++のインスタンス生成箇所のForm2^ f の「^」ってなに?
「gcnew」ってなに・・・?C++は開発経験あるけど、見たことないぞ・・・。
※調べたこと
Yahoo!知恵袋でみつかった。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1445871254
抜粋すると、
普通、C++でクラスをのインスタンスを生成するときに、
クラス名 インスタンス名 = new クラス名();
とやったらメモリリークが起こらないように、終わったら
delete(インスタンス名);
とやる必要があります。
しかし、gcnewを使うと、
クラス名 インスタンス名 = gcnew クラス名();
とやったらdeleteはやらなくても自動的にやってくれるのです。
ここが違います。
メモリリーク回避処理を自動的にやってくれるのが「gcnew」なのです。
しかしこれは標準のC++では使えません。
C++/CLIというVisual C++で.NETを使ったときに使うことになる言語で使用できます。
C++/CLIがわからないようでしたら、
普通のC++ではnew演算子を使ってください。gcnewは使えない。
とだけでも覚えておいてください。
とのこと。
ってことはnew演算子は使えるのか?プログラム書いたらエラーになったんだけど。
どういうことだろう。
Form2 *f = new Form2();←エラーになってビルド出来なかった。
Form2^ f = gcnew Form2();←ビルドが通った。
※「^」については解決してないやん・・・
Visual C++〈1〉はじめてのWindowsプログラミング (プログラミング学習シリーズ)
- 作者: 山本信雄
- 出版社/メーカー: 翔泳社
- 発売日: 1999/12
- メディア: 単行本
- 購入: 5人 クリック: 25回
- この商品を含むブログ (9件) を見る
プロフェッショナル VISUAL C++ 2010 (MSDNプログラミングシリーズ)
- 作者: エディフィストラーニング株式会社,矢嶋聡
- 出版社/メーカー: 日経BP社
- 発売日: 2012/07/05
- メディア: 単行本
- この商品を含むブログ (1件) を見る
これならわかるC++―挫折しないプログラミング入門 CD-ROM付 (ブルーバックス)
- 作者: 小林健一郎
- 出版社/メーカー: 講談社
- 発売日: 2001/05/18
- メディア: 新書
- 購入: 4人 クリック: 23回
- この商品を含むブログ (14件) を見る