如何在表单应用程序上循环while()

时间:2017-03-01 18:56:47

标签: while-loop c++-cli

我想在C ++ / CLI中的windowform应用程序中创建一个循环。

我有以下按钮:

private: System::Void button17_Click(System::Object^  sender, System::EventArgs^  e) {
  this->button17->ForeColor = System::Drawing::Color::Lime;

  while (true) {
    if (button17->Enabled == true) {
      HWND hwnd1;
      hwnd1 = FindWindow(NULL, "1");
    }
    else {
      break;
    }

  } /// End while
}

我创建了一个带有while()语句的按钮。当我按下'on'按钮时,循环应该执行,当我再次按下这个按钮时,循环应该结束,程序应该停止这个while语句。

然而,当我按下我的按钮时,程序会按照我想要的方式执行,但我的应用程序暂停并且无法执行任何操作。我做错了什么,当我按下按钮时如何制作循环,当我再次按下按钮时停止循环?

2 个答案:

答案 0 :(得分:0)

C ++ / CLI不是"只是C ++"。它用于编写代码以将C#或其他.Net语言接口到C ++代码。如果你想编写"只是C ++",做一个C ++项目并使用MFC作为GUI。

在任何语言中,答案都是这样的:按钮处理程序中的while循环将导致UI线程忙于while循环,而不是重绘UI或响应后续按钮推送。为此,我在程序加载时启动后台线程,并使用同步对象来触发线程是否正在工作。

答案 1 :(得分:0)

您正在阻止当前的帖子。

你需要把这个循环放在一个线程中。然后启动线程以在后台运行。

while (true) {
if (button17->Enabled == true) {
  HWND hwnd1;
  hwnd1 = FindWindow(NULL, "1");
}
else {
  break;
} 
} /// End while