Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 将文件路径从Windows窗体传输到函数_Winforms_Visual Studio 2012_Path_C++ Cli_Filenames - Fatal编程技术网

Winforms 将文件路径从Windows窗体传输到函数

Winforms 将文件路径从Windows窗体传输到函数,winforms,visual-studio-2012,path,c++-cli,filenames,Winforms,Visual Studio 2012,Path,C++ Cli,Filenames,对于C++中的用户界面开发,我是个新手。到目前为止,我一直在命令窗口中启动我的程序。 为了启动一个程序,我使用了以下调用。 Prg.exe-slicesize 3-infll 5-model cube.stl-ascii-eulerangles 0 这是使用以下代码处理的 for (int i = 1; i <argc;) {     if (0 == strcmp (argv [i], "-slicesize")) {         slice size = atof (argv [i

对于C++中的用户界面开发,我是个新手。到目前为止,我一直在命令窗口中启动我的程序。 为了启动一个程序,我使用了以下调用。
Prg.exe-slicesize 3-infll 5-model cube.stl-ascii-eulerangles 0

这是使用以下代码处理的

for (int i = 1; i <argc;) {
    if (0 == strcmp (argv [i], "-slicesize")) {
        slice size = atof (argv [i + 1]);
        i + = 2;
    }
    else if (0 == strcmp (argv [i], "-infill")) {
        infill = atof (argv [i + 1]);
        i + = 2;
    }
    else if (0 == strcmp (argv [i], "-model")) {
        strcpy (model file name, argv [i + 1]);
        i + = 2;
    }
    else if (0 == strcmp (argv [i], "-ascii")) {
        isBinaryFormat = false;
        i + = 1;
    }
    else if (0 == strcmp (argv [i], "-eulerangles")) {
        eulerAngles.x = atof (argv [i + 1]);
        eulerAngles.y = atof (argv [i + 2]);
        eulerAngles.z = atof (argv [i + 3]);
        i + = 4;
    }
    else {
        ++i;
    }
}
此处显示所选文件,但必须与程序位于同一文件夹中。但完成的程序必须是动态的

现在我必须开发一个用户界面。为此,我在项目中创建了一个打开OpenFileDialog的按钮。选定文件的路径显示在此处的文本框中

private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
        OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
        openFileDialog1->InitialDirectory = "c:\\";
        openFileDialog1->Filter = "stl files (*.stl)|*.stl|All files (*.*)|*.*";
        openFileDialog1->FilterIndex = 1;
        openFileDialog1->RestoreDirectory = true;

        if( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
        {
            textBox1->Text = openFileDialog1->FileName;
        }
}
使用此代码,我可以搜索文件并查看路径。但是如何将文件名传递给函数
stlToMeshInMemory

另一个问题是我需要什么文件来编程我的函数。我使用Visual Studio 2012,目前我的项目中有三个文件。到目前为止,我发现了以下几点。在myForm.h[设计]中,我可以制作曲面。在myForm.hi程序中,当控制元件被启动时会发生什么。在MyForm.cpp中,我仅限于此

#include "myForm.h"

using namespace System;
using namespace System :: Windows :: Forms;

[STAThread]
void main (array <String ^> ^ arg) {
Application :: EnableVisualStyles ();
Application :: SetCompatibleTextRenderingDefault (false);

Project2 :: MyForm form;
Application :: Run (% form);
}
#包括“myForm.h”
使用名称空间系统;
使用命名空间System::Windows::Forms;
[状态线程]
void main(数组^arg){
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Project2::MyForm;
应用程序::运行(%form);
}

我必须在MyForm.cpp中编写我开发的整个程序吗?其目的是读取文件,并在操作“Translate”按钮时输出文件。

这不是
c++
,而是
c++-cli
。请用相关标签更新您的问题。抱歉,我不知道。我编辑了tagsHard以查看挂断。您最初使用了一个名为modelFileName的变量。现在必须使用不同的变量,如textBox->Text。您可能需要进行类型转换,才能从字符串^转换为std::String或const char*。很多很多关于这方面的问题。MSDN页面。很抱歉,我对这个很陌生,所以我在理解你的评论时遇到了一些问题。我知道我可以将文本框格式字符串中的文本转换为字符。但我不知道如何处理这个字符。我通常只使用控制台应用程序,所以我以前从未开发过UI。是否可以将字符解析为函数?有关使用
marshal\u上下文的操作系统示例,请参见(这是您需要将
System::String^
转换为
const char*
的内容,它不是
c++
,而是
c++-cli
。请使用相关标记更新您的问题。抱歉,我不知道。我编辑了标记碎片以查看挂起。您最初使用的变量名为modelFileName。现在必须使用di。)不同的变量,如textBox->Text。您可能需要进行类型转换,才能从String^转换为std::String或const char*。关于这一点,有很多现有的Q+a。MSDN页面。很抱歉,我对这一点非常陌生,因此我在理解您的评论时遇到一些问题。我知道我可以将textBox表单字符串中的文本转换为char。但我不知道我不知道如何处理这个字符。我通常只使用控制台应用程序,因此我以前从未开发过UI。是否可以将字符解析为函数?请参阅使用
marshal_context
(这是您需要将
System::String^
转换为
const char*
#include "myForm.h"

using namespace System;
using namespace System :: Windows :: Forms;

[STAThread]
void main (array <String ^> ^ arg) {
Application :: EnableVisualStyles ();
Application :: SetCompatibleTextRenderingDefault (false);

Project2 :: MyForm form;
Application :: Run (% form);
}