• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++/CLIにてForm1の要素に外部から)

C++/CLIで外部関数からForm1の要素にアクセスする方法

このQ&Aのポイント
  • C++/CLIにてForm1の要素に外部の関数からアクセスする方法について説明します。
  • この記事では、Windows7とVisual Studio2010を使用してC++/CLIでフォームアプリケーションを作成している場合を想定しています。
  • Form1クラスの要素に対し、Form1.h以外の場所にある外部の自作の関数からアクセスする方法について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

> Form1はこのApplication::Runの中で一時的に作成されているのみということなのでしょうか。 そういうことです。 ですから、外部に対してなんらかの形でフォームのオブジェクトを渡す必要があります。 まぁそこの部分を書き換えてもいいんですが、自動生成される部分にはなるべく手を加えない方がスマートです。 あと、外部関数ということはフォームとは別のスレッドからの制御になると思いますが、その場合単純に書き換えようとすると例外になります。 http://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html

RockmanX
質問者

お礼

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

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

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

RockmanX
質問者

補足

実はそういったアクセス用のメソッド自体は作成していたのですが、 外部のファイルや関数から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の中で一時的に 作成されているのみということなのでしょうか。

関連するQ&A