J Skarzynski
J Skarzynski

Reputation: 33

How to modify a form in a background thread

This might be a simple question but I can't figure it out.

I have a form called in my main function:

void Main() {
    Mem = new MemoryManager();
    Console::WriteLine("Thread Started");
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    FinalSolution::ControlPanel form;
    Thread^ cLoop = gcnew Thread(gcnew ThreadStart(loop));
    cLoop->Start();
    Application::Run(%form);
}

All I want to do is, if someone presses a key in general (not just when the program is in focus), it changes the background to a different color.

I have tried a few things but nothing has worked so far. Here is the loop and I have indicated where I want it to happen.

void loop() {
    while (true) {
        if (GetAsyncKeyState(key)) {
            //Here
            form.button->BackColor = System::Drawing::Color::ForestGreen;
        }
    }
}

Of course the issue is that this function doesn't know what form is, but I don't know how to tell it.

Upvotes: 0

Views: 41

Answers (1)

J Skarzynski
J Skarzynski

Reputation: 33

Ended up just putting the loop directly in the form header and that solved the problem.

Upvotes: 0

Related Questions