Visual C++:将事件处理程序提取到 .cpp 文件
Visual C++: Extracting event handler to .cpp file
作为一名 php 开发人员,在进行了大量算法 C++ 练习后,我决定开始学习 Visual C++。刚开始时,我就卡在了一些非常基本的东西上。我正在尝试将 Button-click 事件从 .h 文件中提取到我的 .cpp 文件中。
我的 .h 文件:
#pragma once
namespace Project1 {
...
this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click);
...
}
在我的 .cpp 文件中,我尝试这样做:
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
namespace Project1 {
[STAThread]
void main(array<String^>^ args)
{
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e) {
// definition
}
...
}
它不起作用。它说 Project1::MyForm 没有 button2_Click。我错过了什么?
标准 'learning the language' 警告:这不是您正在编写的 C++,而是 C++/CLI。 C++/CLI 是 Microsoft 的一种语言,旨在允许 C# 或其他 .Net 语言与标准 C++ 进行交互。在这种情况下,C++/CLI 可以提供两者之间的转换。如果您仍在学习 C++,请不要从 C++/CLI 开始。为了有效地用 C++/CLI 编写,一个人应该已经了解 C++ 和 C#,然后还有一些东西需要学习 C++/CLI。如果您想学习 C++,请坚持使用标准(非托管)C++。 (在 Visual Studio 中创建一个 "Win32" C++ 项目。)如果你想学习托管代码,那么我会使用 C#。
void main(array<String^>^ args)
{
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e) {
// definition
}
}
这不是您定义方法的方式:您在另一种方法的定义中得到了一种方法的定义,这是不允许的。
您在这里需要做的是在MyForm.h中声明button2_Click方法,并在MyForm.cpp
中实现它
// MyForm.h
public ref class MyForm : System::Windows::Forms::Form
{
// Lots of other stuff...
private:
void button2_Click(System::Object^ sender, System::EventArgs^ e);
}
.
// MyForm.cpp
#include "MyForm.h"
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e)
{
// definition
}
作为一名 php 开发人员,在进行了大量算法 C++ 练习后,我决定开始学习 Visual C++。刚开始时,我就卡在了一些非常基本的东西上。我正在尝试将 Button-click 事件从 .h 文件中提取到我的 .cpp 文件中。
我的 .h 文件:
#pragma once
namespace Project1 {
...
this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click);
...
}
在我的 .cpp 文件中,我尝试这样做:
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
namespace Project1 {
[STAThread]
void main(array<String^>^ args)
{
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e) {
// definition
}
...
}
它不起作用。它说 Project1::MyForm 没有 button2_Click。我错过了什么?
标准 'learning the language' 警告:这不是您正在编写的 C++,而是 C++/CLI。 C++/CLI 是 Microsoft 的一种语言,旨在允许 C# 或其他 .Net 语言与标准 C++ 进行交互。在这种情况下,C++/CLI 可以提供两者之间的转换。如果您仍在学习 C++,请不要从 C++/CLI 开始。为了有效地用 C++/CLI 编写,一个人应该已经了解 C++ 和 C#,然后还有一些东西需要学习 C++/CLI。如果您想学习 C++,请坚持使用标准(非托管)C++。 (在 Visual Studio 中创建一个 "Win32" C++ 项目。)如果你想学习托管代码,那么我会使用 C#。
void main(array<String^>^ args)
{
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e) {
// definition
}
}
这不是您定义方法的方式:您在另一种方法的定义中得到了一种方法的定义,这是不允许的。
您在这里需要做的是在MyForm.h中声明button2_Click方法,并在MyForm.cpp
中实现它// MyForm.h
public ref class MyForm : System::Windows::Forms::Form
{
// Lots of other stuff...
private:
void button2_Click(System::Object^ sender, System::EventArgs^ e);
}
.
// MyForm.cpp
#include "MyForm.h"
void MyForm::button2_Click(System::Object^ sender, System::EventArgs^ e)
{
// definition
}