2012-04-30 9 views
1

私は2つのフォームを持っています。私は同時にそれらの両方を開始したい。主なプログラムでは、私はKamruzzaman Pallobの提案に従っています。次のコードは更新版ですが、まだ動作していません。プログラムで2つのウィンドウフォームを開始するにはどうすればよいですか?

エラーはエラーC3350です: 'システム::スレッディング:: ThreadStart':デリゲートコンストラクタは1つの引数(複数可)

#include "stdafx.h" 
    #include "Form1.h" 
    #include "Form3.h" 
    using namespace MySearch; 
    using namespace System; 
    using namespace System::Threading; 



public ref class ThreadX{ 
public: ThreadX(){} 
public: static void func1() 
{ 
    Application::Run(gcnew Form1()); 
} 

public: static void func2() 
{ 
    Application::Run(gcnew Form3()); 
} 


}; 


[STAThreadAttribute] 
int main(array<System::String ^> ^args) 
{ 
// Enabling Windows XP visual effects before any controls are created 
Application::EnableVisualStyles(); 
Application::SetCompatibleTextRenderingDefault(false); 

// Create the main window and run it 


    ThreadX^ o1 = gcnew ThreadX(); 
    ThreadX^ o2 = gcnew ThreadX(); 

    Thread^ th = gcnew Thread(gcnew ThreadStart(o1, &ThreadX::func1)); 
    Thread^ th1 = gcnew Thread(gcnew ThreadStart(o2, &ThreadX::func2)); 
    th->Start(); 
    th1->Start(); 



return 0; 

}

答えて

0

あなたがスレッドを使用することによってそれを行うことができます期待しています。私はC++をよく知らないので、すみません。しかし、私はあなたにCのソリューションを提供することができます#

public static void func1() 
    { 
     Application.Run(new Form1()); 
    } 

    public static void func2() 
    { 
     Application.Run(new Form2()); 
    } 

    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Thread th = new Thread(func1); 
     Thread th1 = new Thread(func2); 
     th.Start(); 
     th1.Start(); 
    } 
1

あなたは次のようなform1のロードイベントを作ってみませんか? :

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { 
     Form2^ form2 = gcnew Form2; 
     form2->Show(); 
    } 

Form1が開くたびにForm2も開きます。それは私のために働くようです。

関連する問題