Форум программистов, компьютерный форум CyberForum.ru

Как это сделать DoEvents? - C++

Восстановить пароль Регистрация
 
Toller
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 171
29.09.2010, 18:27     Как это сделать DoEvents? #1
Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2010, 18:27     Как это сделать DoEvents?
Посмотрите здесь:

как это сделать C++
Как это сделать? C++
Ну как это сделать? C++
C++ Как это сделать ? [c++]
Как это сделать? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sera0
0 / 0 / 0
Регистрация: 04.04.2010
Сообщений: 91
30.09.2010, 12:54     Как это сделать DoEvents? #2
трудно, конечно, сказать про что ты, но

Код
HANDLE hEvent;
hEvent=CreateEvent( NULL,FALSE,FALSE,NULL ); 
// смотри параметры в msdne
когда нужно установить event в сигнальное состояние, используем
Код
SetEvent(hEvent);
Условие
Код
if (WaitForSingleObject(hEvent,0)==WAIT_OBJECT_0) ...
определяет, в сигнальном ли состоянии наш event.

Убиваем хендл:
Код
CloseHandle(hEvent);
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 4
30.09.2010, 15:46     Как это сделать DoEvents? #3
Чел справшивает, что делать, если его программа погрузилась в вычисления и интерфейс не реагирует на действия пользователя.

Из общих соображений можно посоветовать организовывать вычисления отдельной нитью. Также можно попробовать разбить вычисления на небольшие куски и после каждого куска выходить из функции обработки сообщений окна. Механизм перехода к продолжению вычислений можно снабдить задержкой по таймеру.

Но я сам никогда такого не делал, поэтому лучше помолчу.
pl
50 / 16 / 4
Регистрация: 18.05.2007
Сообщений: 1,322
30.09.2010, 16:40     Как это сделать DoEvents? #4
см. Sleep (API)
Toller
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 171
04.10.2010, 07:49  [ТС]     Как это сделать DoEvents? #5
я разобрался:
Код
bool canwork;
void DoEvents()
{

  MSG msg;
  // Process existing messages in the application's message queue.
  // When the queue is empty, do clean up and return.
  while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) && true)
  {
   if (!AfxGetThread()->PumpMessage())
     break;
  }

}

void myf()
{
  int g;
  canwork=true;
  while (canwork) g++;
}

void Cmyp::OnBtnStop() 
{
  canwork=false;
}
Toller
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 171
04.10.2010, 07:50  [ТС]     Как это сделать DoEvents? #6
ой блин: не то написал:
Код
while (canwork)
{
g++;
DoEvents();
}
Yandex
Объявления
04.10.2010, 07:50     Как это сделать DoEvents?
Ответ Создать тему
Опции темы

Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru