簡體   English   中英

C ++睡眠功能無法正常工作

[英]C++ Sleep function doesn't work as is expected

我要先在窗口上繪制一個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)

請問如何解決問題?

您的主設備內部的調用Sleep函數將凍結應用程序,並徹底重新粉刷/刷新。

要執行您需要執行的操作,您必須使用計時器或用作計時器的線程來放置代碼和管理延遲。

計時器事件中的代碼可能像這樣

您的主設備內部的調用Sleep函數將凍結應用程序,並徹底重新粉刷/刷新。

要執行您需要執行的操作,您必須使用計時器或用作計時器的線程來放置代碼和管理延遲。

您的計時器事件中的代碼可能是這樣的,我知道代碼根本不正確,這是一個跟蹤。

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秒后調用,並且可以完成您的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM