在我上一個問題中,我詢問了如何在C++ -cli程序中運行C#表單。我得到它的工作,但我有問題。我會盡量簡短。C++程序中的C#表格
我的C++程序必須執行一個C#表單並在其中執行一些簡單的函數(增加計數器並顯示它們)。但我不知道這樣做的最好方法。我在初始化函數初始化形式:++
Ç - CLI
SUTAdapter::Form1^ *ptForm1; // Global variable
...
FormProject::Form1^ form1;
form1 = gcnew FormProject::Form1();
ptForm1 = &form1;
(*ptForm1)->Show();
(*ptForm1)->incCounter(0);
在C++程序只需調用incCounter其他一些功能。我的問題是,從另一個函數到incCounter的第二次調用使得我的C#Form1 null(this == null),所以我可以使用incCounter的函數代碼而不是類變量。很奇怪,就像程序放置了FormProject一樣。
C#
public void incCounter(int counter)
{
int param1 = counter;
this.count[counter]++; // this == null in sucessive calls from c++ program
}
我在做什麼錯?我實際上禁用了窗體,只是在使用UI時調用函數和變量(invoke等)。正在退出清除Form1的C++ init函數(第一塊代碼)?
它不會讓我有句柄的句柄,只是一個指向句柄的指針。我有它,所以我可以從其他函數調用表單的函數 – Hiperi0n 2009-02-24 10:47:39