如何在Windows窗体中为我的事件函数定义使用单独的.cpp文件?

时间:2012-04-24 21:01:13

标签: c++ winforms function visual-c++ c++-cli

我在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文件中遇到编译器错误,说它不是类或命名空间名称。

如何在seprate文件中获取事件函数的定义和声明?

我只是愚蠢而且在这里缺少一些东西,还是我必须以不同于C ++标准的方式做这些事情?

1 个答案:

答案 0 :(得分: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
}