0

首先,我是 C++ 的新手。我正在用 C++ 实现我的一些有限元 Matlab 代码。将数据写入控制台时我做得很好,但现在我正在尝试使用 Visual Studio 做一个非常简单的 API。我创建了一个 CLR 项目,其中包含一个带有 1 个按钮和一个 TextBox 的表单。表单的代码由 Visual Studio 自动生成。

我正在尝试创建一个执行如下的 API。

1)当我按下按钮时,会执行一个类外的函数。2) 函数执行后,在文本框中打印执行结果。

我不想把函数放在 Form 类中,因为这个函数预计会增长到完整的 FEM 代码。我的问题是我无法设置文本框的文本属性,例如: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

只是一个建议,永远不要在你的算法中调用 gui,最好的方法是为你的算法创建一个类,在其中完成计算,另一个类作为控制器。

在 main 方法中,您为控制器创建一个 algo 实例和另一个实例,并将 form1 实例和 algo 实例提供给控制器,控制器将调用算法并在刷新表单后。

于 2012-10-05T22:20:35.487 回答
1

将您的calcular函数传递给文本框或类似内容的指针。我不知道您的文本框的正确类型,但代码如下所示:

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

您可能还需要调用setText函数或类似的东西,而不是直接修改属性。

于 2012-10-05T22:13:10.930 回答