Как запустить двухоконную форму в программе?

У меня две формы. Я хочу запустить их обоих одновременно. В основной программе я следую предложению Камруцзамана Паллоба. Следующий код является версией обновления, но он все еще не работает.

Ошибка - это ошибка C3350: «System::Threading::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;

}


person user765168    schedule 30.04.2012    source источник


Ответы (3)


Почему бы вам просто не создать событие загрузки формы 1, как показано ниже? :

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

Затем каждый раз, когда открывается форма Form1, открывается и Form2. Кажется, это работает для меня.

person SuperPrograman    schedule 03.05.2012

Вы можете сделать это, используя потоки. Извините, потому что я плохо знаю С++. Но я могу дать вам решение в С#

 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();
    }
person Md Kamruzzaman Sarker    schedule 30.04.2012

Пытаться :

Thread^ th = gcnew Thread(gcnew ThreadStart( &ThreadX::func1 ) );
Thread^ th1 = gcnew Thread(gcnew ThreadStart( &ThreadX::func2 ) );

См. http://msdn.microsoft.com/en-us/library/system.threading.threadstart.aspx

person James Lockhart    schedule 10.12.2012