如何在Visual C++ 2008 Managed中创建具有一个或多个函数的类模块

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++中调用这个函数.

这就是我不想要的:

  • 一个DLL
  • 第二个项目
  • 添加对某事物的引用(在项目/参考文献中)
  • 双重声明

我知道有一种方法可以创建一个简单的类,然后创建一个这个类的新对象来使用它的方法.这就是我想要的.Google中关于此的示例对我不起作用,因为它们适用于Visual Studio的早期版本,与我的版本不兼容.从这个例子我知道我想要什么,但我没有在Visual Studio 2008中实现它的知识.

Dav*_*d W 6

我将再次尝试发布有关如何将类文件添加到VS2008 WinForm项目的分步说明.在完成列表之前,我再次没有意识到编号项目在这里并不总是干净利落.我能够修复除了其中一个数字之外的所有数字,所以这应该是好的 - 大卫W

  1. 这些步骤假定在VS2008中有一个简单的启动项目,包括一个带有默认表单和单个按钮控件的WinForms应用程序,如下所示: 演示项目的起点.
  2. 要向此项目添加新类,请右键单击"DemoWinFormApp",选择"添加",然后选择"类...",如下所示: 添加一个类
  3. 在"添加类"对话框的"名称"字段中为类命名DemoNewClass,然后单击"添加"按钮: 添加新的类名
  4. Visual Studio将向项目添加两个文件:DemoNewClass.h,定义的头文件,以及DemoNewClass.cpp,用于标头中定义的函数的实际C++实现.添加后,Visual Studio编辑器使头文件处于活动状态,但显示以下内容: 添加头文件后的编辑器消息 单击"单击此处切换到代码视图"链接以打开源编辑器.
  5. 编辑器现在显示DemoNewClass.h头文件的源代码.该文件包括从主应用程序DemoWinFormApp自动声明命名空间,还包含"public:"区域中的两个默认构造函数,我们不会触及它们.我们将在第二个构造函数定义之后立即向DemoNewClass添加一个新的公共静态方法.

  6. 我们将添加一个静态方法 - 一个不需要实例化主机类的方法 - 将字符串放在字符串周围.该方法将被称为"DecorateString"

  7. 紧跟第二个构造函数后,添加如此处所示的声明并以蓝色突出显示: 新功能声明

  8. 有了声明,我们现在必须添加实现.在解决方案资源管理器中,双击"DemoNewClass.cpp"以编辑文件: 编辑实施文件

  9. 编辑器窗口打开,文件只有两行 - 两个包含指令,指示编译器将引用的文件作为当前源的一部分引入.默认情况下提供DemoNewClass.h中提供的声明.

  10. 将DecorateString方法的实现添加到.cpp文件中,如下所示: 在此输入图像描述 这样就完成了新类的定义,DecorateString声明以及DecorateString方法的实现提供.现在剩下的就是允许WinForms应用程序从主窗体引用类和方法.

  11. 在解决方案资源管理器中,双击DemoWinFormApp项目的"头文件"列表中的"Form1.h"文件,该文件在编辑器中显示Form1.(该按钮已添加,添加按钮的步骤留给读者): 在此输入图像描述

  12. 为了演示新的类方法,我们将按钮单击显示由我们的DecorateString方法通过MessageBox类修改的字符串.首先,我们必须通过向Form1.h头文件顶部的新类头部提供include指令,使表单知道我们的新类.右键单击设计器中的表单,然后单击"查看代码..."以显示源编辑器 在此输入图像描述

  13. 为了使类及其方法可用于表单,我们必须为Form1.cpp实现源文件顶部附近的类'header,DemoNewClass.h 提供一个include指令: 包含指令

  14. 在解决方案资源管理器中,双击"Form1.h"以使用Form1打开表单设计器.或者,如果文件仍在编辑器中打开,则可以通过单击"Form1.h [Design]"标签的编辑器选项卡打开Designer.

  15. 我们将从事件处理程序调用我们的新类方法,该事件处理程序与表单上的"button1"按钮相关联.Visual Studio通过双击设计器中的"button1"提供默认处理程序: 按钮单击处理程序

  16. 键入调用MessageBox :: Show方法的代码,将由DemoNewClass :: DecorateString方法修改的字符串作为参数传递,如下所示 - 注意Intellisense如何知道我们的新类: 在此输入图像描述
  17. 这是完成的事件处理程序/类方法调用: 完整的方法调用
  18. 从Visual Studio"Build"菜单中,选择"Build Solution"(或按F6).这将编译解决方案并显示可能已检测到的任何语法错误.提供的样本可以干净地编译和构建.

构建解决方案

在此输入图像描述 20.通过成功构建,剩下的就是测试应用程序.按F5运行应用程序并显示测试表单:

在此输入图像描述

  1. 单击"button1"以运行处理程序,并查看修饰的字符串:

在此输入图像描述

传递的参数"foo"已成功传递给新类'DecorateString方法,并返回到MessageBox方法以供显示.现在,新的类方法声明和表单引用已完成.

祝好运.