Как одна "приостанавливает" программу на С++ на Win 32 и какие библиотеки должны быть включены?
Как сделать программный сон на С++ на Win 32?
Ответ 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