Member 14594285 Ответов: 2

Что такое событие, которое останавливает функцию сна в mfc C++?


Мне нужно иметь even6t, который останавливает сон, но я не знаю, что, я sa3w, что событие keyDown не останавливает sleeo, как я могу это сделать?

Что я уже пробовал:

Я пытался отогнать сон, но он мне нужен.

2 Ответов

Рейтинг:
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

Как же мне поступить? Могу я посмотреть пример?