底辺過ぎてちょっとビビる

26歳からIT業界にいるエンジニアが、まったく成長できてないことを確認するブログ。備忘録的に使いたいとも考えています。

C++Builder/VC++ フォームから別のフォームを呼び出す方法

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プログラミング (プログラミング学習シリーズ)

Visual C++〈1〉はじめてのWindowsプログラミング (プログラミング学習シリーズ)

 
プロフェッショナル VISUAL C++ 2010 (MSDNプログラミングシリーズ)

プロフェッショナル VISUAL C++ 2010 (MSDNプログラミングシリーズ)

 
これならわかるC++―挫折しないプログラミング入門 CD-ROM付 (ブルーバックス)

これならわかるC++―挫折しないプログラミング入門 CD-ROM付 (ブルーバックス)