Рейтинг:
8
Rick York
Да, вы определенно хотите избежать вызова сна, потому что нет ничего, что я осознаю, что остановит его - его нельзя прервать.
Вам лучше дождаться события, используя класс CEvent, как уже упоминалось. Затем вы можете вызвать WaitForSingleObject или WaitForMultipleObjects и позволить ему обрабатывать "спящий режим" для вас.
Member 14594285
Как же мне поступить? Могу я посмотреть пример?
Rick York
комментарий стивеба выше был намеком для вас. Чтобы использовать WaitForSingleObject, вы должны передать ему объект для ожидания. Это может быть любой "дескриптор" объекта, который может быть сигнализирован. В вашем случае вам нужно объявить объект события (CEvent или аналогичный), доступный классу, который получает сообщения клавиатуры, и установить событие при нажатии клавиши.
Member 14594285
Я написал::
for (int i = 0; i <= 20; i++)
{
Сон(100);
WaitForSingleObject(OnKeyDown, 100);
...
но у меня есть ошибки
Member 14594285
Итак, CEvent a = OnKeyDown? Я не понимаю ... извини, но это в первый раз для меня
Рейтинг:
0
steveb
Класс CEVENT MFC. CEvent::ResetEvent() переводит функцию потока в спящее состояние, а CEvent::SetEvent() пробуждает функцию.
CEvent::PulseEvent() устанавливает событие в avalable, а затем недоступное.
Документация Microsoft:
[^]
Member 14594285
МММ..Я видел документацию, но она не очень понятна, поэтому в setEvent я могу поместить событие keyDown, например событие, которое будит программу? Помогите
steveb
keyDown в MFC-это CWnd::OnKeyDown() обработчика сообщений WM_KEYDOWN. Поместите свой вызов SetEvent в этот обработчик сообщений
Member 14594285
Как же мне поступить? Могу я посмотреть пример?