视觉C++睡眠功能无法按预期工作

visual C++ Sleep function doesn't work as is expected

本文关键字:工作 C++ 功能 视觉      更新时间:2023-10-16

我将首先在窗口上绘制一个polygon,一秒钟后删除该polygon并绘制一个circle。我为它写了这段代码:

#include <Simple_window.h>
#include <Graph.h>
using namespace Graph_lib;
//------------------------------------------------------------------------------
int main() {
    Simple_window win(Point(100,100),600,400,"lines");
    Graph_lib::Polygon poly;
    Circle c(Point(100,150), 50);
    poly.add(Point(100,100));
    poly.add(Point(150,150));
    poly.add(Point(50,100));
    win.attach(poly);
    Sleep(1000);
    win.detach(poly);
    win.attach(c);
    win.wait_for_button();
    return 0;
}

但在实践中并非如此。实际上,系统只需等待一秒钟,仅显示circle (c)polygon (poly)将不会显示!

请问如何解决问题?

调用 main 中的睡眠函数将冻结应用程序,并重新绘制/刷新。

要做 yiu 需要做的事情,您必须使用计时器或用作计时器的线程来放置代码和管理延迟。

计时器事件中的代码可能是这样的

调用主线程中的睡眠功能将冻结应用程序,并重新绘制/刷新。

要做 yiu 需要做的事情,您必须使用计时器或用作计时器的线程来放置代码和管理延迟。

计时器事件中的代码可能是这样的,我知道代码根本不正确,这是一个痕迹。

Graph_lib::Polygon poly;
Circle c;
void OnTimerEvent()
{
      win.detach(poly);
      win.attach(c);
}
int main()
{
    c(Point(100,150), 50);
    poly.add(Point(100,100));
    poly.add(Point(150,150));
    poly.add(Point(50,100));
    win.attach(poly);
    timer.interval = 1000;
    timer.enabled = true;
    win.wait_for_button();
}

我的意思是,您必须启动一个计时器,该计时器将在 1 秒后调用该事件并可以完成您的工作。