2012-04-24 2 views
2

WindowsフォームでC++イベント関数を定義する際に問題があります。Windowsフォームのイベント関数定義に別の.cppファイルを使用する方法は?

WindowsフォームGUI用に生成済みのコードですでに使用されているWindowsフォームの.hファイル内のすべての関数定義を実行する代わりに、別の.cppファイルでイベント関数(例:ボタンクリック)を定義します。

私はこれをやってみました

、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++標準以外の方法でこれらのことをしなければなりませんか?

+0

これはC++標準と必ずしも関係がありませんが、これはC + +/cliデザインの根拠? – EdChum

+0

@EdChum:宣言と定義を分ける方法がわからない貧弱なWinFormsコードジェネレータと同じくらい、デザイン_合理化ではありません。 – ildjarn

+0

@ildjarnの申し立ては、最後の行を読み直して、OPが何を言っているのか理解していますが、生成されたコードの投稿は役に立ちます。 – EdChum

答えて

3

あなたのクラス定義は、(私はプレースホルダとしてProject1を使用します)、いくつかの名前空間の内部で最も可能性が高いです。

#include "Form1.h" 

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

か:

#pragma once 

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

その結果、あなたの定義は、同様にする必要があります

#include "Form1.h" 

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

ありがとう!名前空間について忘れましたが、今は魅力的です! – Kersch

関連する問題