将点击事件从.h(设计器代码)分离到.cpp文件

时间:2011-06-21 01:23:04

标签: header c++-cli organization

我遇到了Windows应用程序表单的组织问题,我需要一些帮助。现在,代码在c ++的.net 4.0中的microsoft studio 2010中完成。 GUI应用程序的头文件没有被组织,这可能导致10,000行或更多行代码,这使得它很难阅读。

我试图将click事件实现分成包含“Form1.h”的.cpp文件。

private:
    System::Void sIToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e){
        switch(this->USCustomaryFlg){
        case true:
            this->sIToolStripMenuItem->Checked = true;
            this->mnuUSMetric->Checked = false;
            this->USCustomaryFlg = false;
            cout << "SI flag is now true." << endl;
            break;
        case false:
            break;
        }
    }

在Form1的.cpp文件中的这个表单:

System::Void mnuUSMetric_Click(System::Object^  sender, System::EventArgs^  e){
    switch(this->USCustomaryFlg){
    case true:
        cout << "USCustomaryFlg is now false." << endl;
        break;
    case false:
        this->mnuUSMetric->Checked = true;
        this->USCustomaryFlg = true;
        this->sIToolStripMenuItem->Checked = false;
        cout << "USCustomaryFlg is now true." << endl;
        break;
    }
}

我收到的错误只是我得到的一个例子:

  

错误2错误C2355:'this':只能在非静态成员函数中引用E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 16

     

错误4错误C2355:'this':只能在非静态成员函数中引用E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 21

     

错误3错误C2227:'->USCustomaryFlg'的左侧必须指向类/ struct / union / generic类型E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 16

     

错误8错误C2227:'->USCustomaryFlg'的左侧必须指向类/ struct / union / generic类型E:\ Summer 2011 \ Engineer Software \ GUItest \ GUItest \ Form1.cpp 22

对此有何想法?

1 个答案:

答案 0 :(得分:4)

如果您的C ++方法已定义(即将其正文编写)与其声明(即它在类中的签名)分开,则需要为方法定义添加前缀班级名称。

E.g。如果您的类名为MyForm,则定义应为

System::Void MyForm::mnuUSMetric_Click(System::Object^  sender, System::EventArgs^  e){
    ...
}