dポイントプレゼントキャンペーン実施中!

C++/CLIにてForm1の要素に外部の関数からアクセスしたいです。

Windows7、Visual Studio2010にてC++/CLIで
簡単なフォームアプリケーションを作成しています。


仮に新規作成し、とりあえずテキストボックスを貼りつけたとします。

この際「Form1.h」が自動的に作成され、Form1クラスの中に
textBox1などの要素が自動的に作成されるかと思います。
Form1クラスのメソッドの中からそれにアクセスするには

this->textBox1->Text = L"変更";

みたいにするだけで良いですが、
こうしたForm1クラスの要素に対し、
Form1.h以外の場所にある外部の自作の関数から
アクセスを行うにはどのようにすれば良いのでしょうか。

A 回答 (2件)

> Form1はこのApplication::Runの中で一時的に作成されているのみということなのでしょうか。



そういうことです。
ですから、外部に対してなんらかの形でフォームのオブジェクトを渡す必要があります。
まぁそこの部分を書き換えてもいいんですが、自動生成される部分にはなるべく手を加えない方がスマートです。

あと、外部関数ということはフォームとは別のスレッドからの制御になると思いますが、その場合単純に書き換えようとすると例外になります。
http://www.atmarkit.co.jp/fdotnet/dotnettips/312 …
    • good
    • 0
この回答へのお礼

返事が遅くなってしまいました。とても助かりました。どうもありがとうございます。

お礼日時:2011/04/12 17:43

Form1クラスに変更を行うメソッドを作り、自作関数からそのメソッドを呼び出しましょう。

この回答への補足

実はそういったアクセス用のメソッド自体は作成していたのですが、
外部のファイルや関数からForm1のメソッドを呼び出す方法が分からずにいました。
仮にForm1にvoid test()というメソッドがあったとした場合、
違うファイルからそのtest関数を呼び出すにはどのようにすれば良いのでしょうか。

というのも、Form1がどこで宣言されているのかもよく分からないのです。
main関数を見れば

int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// メイン ウィンドウを作成して、実行します
Application::Run(gcnew Form1());
return 0;
}

などとなっていましたが、Form1はこのApplication::Runの中で一時的に
作成されているのみということなのでしょうか。

補足日時:2011/02/17 06:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!