VC++ で作成したDLLを VBで使用しています。
VBで関数を呼び出し、FORMを作成していますが、
一度FORMを閉じてしまうと次からは開きません。
イベントハンドラでクローズイベントを作っているのですが
デリゲートの仕方がよくわかりません。
どう設定すればよいか教えてください。
VB上で動作しているのでクローズをどうやって認識すればよいのでしょうか?
うまく質問が伝わっているかわかりませんが
どうかよろしくお願いします。
******************
VC++ ソース
double ABC::DEF( a, b, c, d, e, f, m,)
{
if(m == 1)
{
if(ff == false)
{
Form^ about = gcnew Form;
ff = true;
about->Show();
about->Closed += gcnew System::EventHandler(???,???);
}
}
//
省略
//
}
System::Void CLOSE(System::Object^ sender, System::EventArgs^ e) {
//this->Text = L"finish";
ff = false;
}
***********
> System::Void CLOSE(System::Object^ sender, System::EventArgs^ e) {
はグローバル関数?
gcnew System::EventHandler(&CLOSE);
とするとどうなりましたか?
blueさん
回答ありがとうございます。
about->Closed += gcnew***
のところで下記エラーが出てしまいます。
/*/*/*/*
error C3364: 'System::EventHandler' : delegate コンストラクタの引数が無効です。デリゲート ターゲットはメンバ関数のポインタである必要があります。
/*/*/*/*
>System::Void CLOSE(System::Object^ sender, System::EventArgs^ e)
のところではエラー出ていないので困っています。
うまく回答できているかわかりませんが教えてください。
困る!
http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=971
>> System::Void CLOSE(System::Object^ sender, System::EventArgs^ e) {
>はグローバル関数?
の返答は?
一応
http://vene.wankuma.com/ecma372/27_delegate.aspx
の
27.2 デリゲート型インスタンス化
より
<引用>
各々のデリゲート型毎に、以下のような、二つのコンストラクタを持ちます。
・一つの引数、del-con-arg1 を持つコンストラクタは、静的関数や名前空間中の関数からデリゲートを作成します。
この del-con-arg1 は静的メンバ関数のアドレス、グローバル、ないし、名前空間中の関数のアドレスで、
インスタンス化デリゲート型において互換性があります。
・二つの引数、各々、del-con-arg2、del-con-argl3 を取るコンストラクタがあります。
これはインスタンス関数からデリゲートを作成するために使われます。この場合、del-con-argl2 は
CLI クラス・インスタンスへの参照であり、del-con-argl3 はそのインスタンスの型に直接定義されたインスタンス関数のアドレスであるべきです。
[
</引用>
とあります。
>System::Void CLOSE(System::Object^ sender, System::EventArgs^ e) {
はグーロバルではありません。
回答おくれてすいません
>グーロバルではありません。
ではどのクラスのメソッドですか?
また、そのメソッドのなかでthisを参照することはありうりますか?
→なければstaticメソッドにすれば終わり。
そうでなければどのインスタンスの関数なのかを特定するために
>about->Closed += gcnew System::EventHandler(???,???);
でインスタンスが必要になります。
ツイート | ![]() |