0

まず、私はC++の初心者です。有限要素Matlabコードの一部をC++で実装しています。コンソールにデータを書き込むときは問題なく動作していますが、現在はVisualStudioで非常に単純なAPIを実行しようとしています。1つのプッシュボタンと内部にTextBoxを備えたフォームを使用してCLRプロジェクトを作成しました。フォームのコードは、VisualStudioによって自動的に生成されます。

次のように動作するAPIを作成しようとしています。

1)ボタンを押すと、クラス外の関数が実行されます。2)関数の実行後、実行結果がテキストボックスに出力されます。

この関数は完全なFEMコードに成長すると予想されるため、Formクラス内に関数を配置したくありません。私の問題は、テキストボックスのTextプロパティを次のように設定できないことですthis->TextBox1->Text = "Result is 22"。それを簡単に行う方法はありますか?

私のコードは次のように構成されています。

// programa.cpp : main project file.

#include "stdafx.h"
#include "Form1.h"  // (cointains the Form1 Class)
#include <iostream>

using namespace programa;
using namespace std;

[STAThreadAttribute]


void calcular(int a) {  
    .... // Calculation
    .... // Some method to set Text of Text Box
}


int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Create the main window and run it
    Application::Run(gcnew Form1());
    return 0;
}
4

2 に答える 2

1

calcular関数にテキストボックスなどへのポインタを渡します。テキストボックスの正しいタイプはわかりませんが、コードは次のようになります。

void calcular(int a, TextBox* textbox) {  
    .... // Calculation
    textbox->Text = "Result is 22";
}

setTextまた、プロパティを直接変更するのではなく、関数などを呼び出す必要があります。

于 2012-10-05T22:13:10.930 に答える
1

ただのアドバイスは、アルゴリズムでGUIを呼び出すことは決してなく、決して呼び出さないことです。最良の方法は、計算が行われるアルゴリズムのクラス、コントローラーとしての別のクラスを作成することです。

mainメソッドでは、algoのインスタンスとコントローラー用の別のインスタンスを作成し、controlerにform1インスタンスとalgoインスタンスを指定すると、コントローラーはalgoを呼び出し、フォームを更新します。

于 2012-10-05T22:20:35.487 に答える