2

我无法在 Windows 窗体中定义我的 C++ 事件函数。

我想在一个单独的 .cpp 文件中定义我的事件函数(例如:按钮单击),而不是在 windows 窗体 .h 文件中执行所有函数定义,该文件已经充满了为 windows 窗体 GUI 生成的代码。

我尝试这样做,在 Form1.h 类中声明:

private: System::Void ganttBar1_Paint
(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e);

这是 Form1.cpp 类中的定义:

#include "Form1.h"

System::Void Form1::ganttBar1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e)
{
    // Definition
}

当我这样做时,我在 .cpp 文件中收到编译器错误,指出它不是类或命名空间名称。

我该怎么做才能在单独的文件中获取事件函数的定义和声明?

我只是愚蠢并在这里遗漏了一些东西,还是我必须以不同于 C++ 标准的方式来做这些事情?

4

1 回答 1

4

您的类定义很可能在某个命名空间内(我将Project1用作占位符):

#pragma once

namespace Project1
{
    ref class Form1 : public System::Windows::Forms::Form
    {
        // ...
    };
}

因此,您的定义也必须是:

#include "Form1.h"

namespace Project1
{
    void Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
    {
        // definition
    }
}

或者

#include "Form1.h"

void Project1::Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
    // definition
}
于 2012-04-24T21:13:14.140 回答