具有可视C++的窗口窗体应用程序中的 Sleep()
Sleep() in Window Form Application with visual C++
我的问题与Visual C++中的窗口表单应用程序和System::Threading::Thread::Sleep(int delayTime)
有关。
我的窗口窗体有一个面板,其中有 3 个椭圆形,分别名为 ovalShape1、ovalShape2 和 ovalShape3。按钮名称按钮位于面板旁边。按钮与单击事件相关联。我需要的是当我单击按钮时,每个椭圆形的颜色将在每 1 秒(1000 毫秒)后更改为红色。这是我所做的:
private: System::Void buttonClick(System::Object^ sender, System::EventArgs^ e) {
this->ovalShape1->FillColor = System::Drawing::Color::Red;
System::Threading::Thread::Sleep(1000);
this->ovalShape1->FillColor = System::Drawing::Color::White;
this->ovalShape2->FillColor = System::Drawing::Color::Red;
System::Threading::Thread::Sleep(1000);
this->ovalShape2->FillColor = System::Drawing::Color::White;
this->ovalShape3->FillColor = System::Drawing::Color::Red;
System::Threading::Thread::Sleep(1000);
this->ovalShape3->FillColor = System::Drawing::Color::White;
}
但是由于某种原因(我不知道),该应用程序无法按我预期的方式工作。椭圆形1只是闪烁,仅此而已。
也许你知道原因!
任何帮助或建议将不胜感激!
这是因为Windows UI绘图优化。设置椭圆的填充颜色时:
- 新颜色存储在 FillColor 属性中
- 计划在处理完成后完成重新绘制。
因此,您修改 FillColor 三次,并计划重新绘制椭圆三次。然后你的代码完成,椭圆形最终被重新绘制。
您必须在更改其颜色后调用ovalShape.Refresh()
才能强制重绘该控件。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 具有可视C++的窗口窗体应用程序中的 Sleep()