Подтвердить что ты не робот

Как сделать программный сон на С++ на Win 32?

Как одна "приостанавливает" программу на С++ на Win 32 и какие библиотеки должны быть включены?

4b9b3361

Ответ 1

#include <windows.h>

Sleep(number of milliseconds);

Или если вы хотите приостановить свою программу во время ожидания другой программы, используйте WaitForSingleObject.

Ответ 2

Если вы используете boost, вы можете использовать функцию thread::sleep:

#include <boost/thread/thread.hpp>
boost::system_time time = boost::get_system_time();
time += boost::posix_time::seconds(1);
boost::thread::sleep(time); 

В противном случае вам придется использовать win32 api:

#include <windows.h>
Sleep(1000);

И, судя по всему, С++ 0x включает в себя следующее:

#include <thread>
std::this_thread::sleep_for(chrono::seconds(1));

Ответ 3

Если вы хотите, чтобы программа оставалась отзывчивой во время паузы, вам нужно использовать событие таймера.

Ответ 4

В С++ 11 вы можете сделать это со стандартными библиотечными возможностями:

#include <chrono>
#include <thread>
std::this_thread::sleep_for(std::chrono::milliseconds(x));

Ответ 5

Это зависит от того, какую программу вы пишете.

Консольное приложение может просто вызвать "Сон". Приложение GUI, вероятно, не хочет этого делать, поскольку все меню и виджеты будут нечувствительными, и приложение не будет перерисовываться в течение этого периода. Вместо этого вам нужно сделать что-то вроде настройки таймера с обратным вызовом, когда он истечет.

Ответ 6

Не используйте функцию сна в вашем графическом интерфейсе, если она не предоставляется рамкой, с которой вы работаете. Это может создать проблемы с привязкой к данным (особенно в потоке, который не является основным потоком). Это может заморозить ваш графический интерфейс. Это не просто вопрос сна в течение короткого времени, используйте waitmutexes, если вам нужно это сделать.

Ответ 7

Обратите внимание, что приведенный выше код был протестирован на Code:: Blocks 12.11 и Visual Studio 2012
на Windows 7.

Чтобы заставить вашу программу останавливаться или ждать, у вас есть несколько вариантов:


  • sleep (unsigned int)

Значение должно быть положительным целым числом в миллисекундах. Это означает, что если вы хотите, чтобы ваша программа ждала 2 секунды, введите 2000.

Вот пример:

#include <iostream>     //for using cout
#include <stdlib.h>     //for using the function sleep

using namespace std;    //for using cout

int main(void)         
{
   cout << "test" << endl;
   sleep(5000);         //make the programme waiting for 5 secondes
   cout << "test" << endl;
   sleep(2000);         // wait for 2 secondes before closing

   return 0;
}

Если вы слишком долго ждали, это означает, что параметр находится во втором. Так измените его так:

sleep(5);

Для тех, кто получает сообщение об ошибке или проблему с помощью сна, попробуйте заменить его на _sleep или Sleep, особенно на Code:: Bloks.
И если у вас все еще возникают проблемы, попробуйте добавить одну из этих библиотек в формат кода.

#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <dos.h>
#include <windows.h>

  • система ( "Пауза" )

Простая программа "Hello world" на консольном приложении Windows, вероятно, закроется, прежде чем вы сможете что-либо увидеть. Это тот случай, когда вы можете использовать систему ( "Пауза" ).

#include <iostream>    

using namespace std;   

int main(void)         
{
    cout << "Hello world!" << endl;

    system("PAUSE");

    return 0;
}

Если вы получите сообщение "ошибка:" система "не была объявлена ​​в этой области" просто добавьте следующая строка при расширении кода:

#include <cstdlib>

  • cin.ignore()

То же самое можно достичь, используя cin.ignore():

#include <iostream>     

using namespace std;    

int main(void)         
{
    cout << "Hello world!" << endl;

    cin.ignore();

    return 0;
}

  • cin.get()

пример:

#include <iostream>     

using namespace std;    

int main(void)         
{
    cout << "Hello world!" << endl;

    cin.get();

    return 0;
}

  • Геч()

Не забудьте добавить библиотеку conio.h:

#include <iostream>     
#include <conio.h>    //for using the function getch()

using namespace std;    

int main(void)
{

    cout << "Hello world!" << endl;

    getch();

    return 0;
}

У вас может быть сообщение с сообщением об использовании _getch() insted getch