fee*_*all 1 clr managed class function visual-c++
我是Visual C++的绝对新手,因此我不得不问你,如何在托管C++项目(Visual Studio 2008)中创建一个带有一个或多个函数的托管类模块(新类)?如果按下按钮,我将如何调用类的方法.我无法理解关于它的非常复杂的教程,大多数教程都涉及非托管代码或旧版Visual Studio.我自己的尝试完全失败并且只产生了错误,因为我没有找到关于如何向Visual C++托管项目添加新类文件的正确选项.如果我选择一个新的"CLR组件类",我会收到一条警告消息,告诉我填充屏幕右侧窗格的组件.如果我选择一个新的"CLR Windows Form Class",它什么都不会发生,没有添加扩展名为".class"的文件,或者我不知道新添加的文件.我只需要一个非常基本的类文件,其中包含一个公共函数,我可以从项目的任何位置调用它.
我有一个非常大的main()cpp文件(main.cpp),里面有很多函数.大约有几千个函数或更多函数,因此搜索或滚动变得困难.现在我想将这些1000个函数中的一些放在我当前项目中的第二个cpp文件中(在Visual Basic 6中,它简称为CSharp中的"新模块",它被称为"新类文件").问题是,一旦我将它们从main.cpp移到module1.cpp,我就无法在Visual C++中调用这个函数.
这就是我不想要的:
我知道有一种方法可以创建一个简单的类,然后创建一个这个类的新对象来使用它的方法.这就是我想要的.Google中关于此的示例对我不起作用,因为它们适用于Visual Studio的早期版本,与我的版本不兼容.从这个例子我知道我想要什么,但我没有在Visual Studio 2008中实现它的知识.
我将再次尝试发布有关如何将类文件添加到VS2008 WinForm项目的分步说明.在完成列表之前,我再次没有意识到编号项目在这里并不总是干净利落.我能够修复除了其中一个数字之外的所有数字,所以这应该是好的 - 大卫W
编辑器现在显示DemoNewClass.h头文件的源代码.该文件包括从主应用程序DemoWinFormApp自动声明命名空间,还包含"public:"区域中的两个默认构造函数,我们不会触及它们.我们将在第二个构造函数定义之后立即向DemoNewClass添加一个新的公共静态方法.
我们将添加一个静态方法 - 一个不需要实例化主机类的方法 - 将字符串放在字符串周围.该方法将被称为"DecorateString"
紧跟第二个构造函数后,添加如此处所示的声明并以蓝色突出显示:
有了声明,我们现在必须添加实现.在解决方案资源管理器中,双击"DemoNewClass.cpp"以编辑文件:
编辑器窗口打开,文件只有两行 - 两个包含指令,指示编译器将引用的文件作为当前源的一部分引入.默认情况下提供DemoNewClass.h中提供的声明.
将DecorateString方法的实现添加到.cpp文件中,如下所示:
这样就完成了新类的定义,DecorateString声明以及DecorateString方法的实现提供.现在剩下的就是允许WinForms应用程序从主窗体引用类和方法.
在解决方案资源管理器中,双击DemoWinFormApp项目的"头文件"列表中的"Form1.h"文件,该文件在编辑器中显示Form1.(该按钮已添加,添加按钮的步骤留给读者):
为了演示新的类方法,我们将按钮单击显示由我们的DecorateString方法通过MessageBox类修改的字符串.首先,我们必须通过向Form1.h头文件顶部的新类头部提供include指令,使表单知道我们的新类.右键单击设计器中的表单,然后单击"查看代码..."以显示源编辑器
为了使类及其方法可用于表单,我们必须为Form1.cpp实现源文件顶部附近的类'header,DemoNewClass.h 提供一个include指令:
在解决方案资源管理器中,双击"Form1.h"以使用Form1打开表单设计器.或者,如果文件仍在编辑器中打开,则可以通过单击"Form1.h [Design]"标签的编辑器选项卡打开Designer.
我们将从事件处理程序调用我们的新类方法,该事件处理程序与表单上的"button1"按钮相关联.Visual Studio通过双击设计器中的"button1"提供默认处理程序:
20.通过成功构建,剩下的就是测试应用程序.按F5运行应用程序并显示测试表单:
传递的参数"foo"已成功传递给新类'DecorateString方法,并返回到MessageBox方法以供显示.现在,新的类方法声明和表单引用已完成.
祝好运.