我想在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语句。
然而,当我按下我的按钮时,程序会按照我想要的方式执行,但我的应用程序暂停并且无法执行任何操作。我做错了什么,当我按下按钮时如何制作循环,当我再次按下按钮时停止循环?
答案 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