DoEvents, эквивалентный для C++?

, Если у Вас есть ситуация, где соединение TCP является потенциально слишком медленным и UDP 'соединение' потенциально слишком ненадежен, что Вы используете? Там существуют различные стандартные надежные протоколы UDP, какие события Вы имеете с ними?

ключевое слово в Вашем предложении 'потенциально'. Я думаю, что действительно необходимо доказать себе, что TCP является, на самом деле, слишком медленным для Ваших потребностей при необходимости в надежности в протоколе.

, Если Вы хотите вытащить надежность из UDP тогда, Вы в основном собираетесь быть перереализацией некоторых функций TCP сверху UDP, который, вероятно, сделает вещи медленнее, чем просто использование TCP во-первых.

6
задан Kim Gräsman 12 September 2009 в 13:33
поделиться

2 ответа

DoEvents в основном переводится как:

void DoEvents()
{
    MSG msg;
    BOOL result;

    while ( ::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE ) )
    {
        result = ::GetMessage(&msg, NULL, 0, 0);
        if (result == 0) // WM_QUIT
        {                
            ::PostQuitMessage(msg.wParam);
            break;
        }
        else if (result == -1)
        {
             // Handle errors/exit application, etc.
        }
        else 
        {
            ::TranslateMessage(&msg);
            :: DispatchMessage(&msg);
        }
    }
}
16
ответ дан 8 December 2019 в 13:01
поделиться

Я немного устарел в Win32 API, но асинхронный способ сделать это:

  • Аннулировать прямоугольник
  • Установить таймер (см. Ниже) для отправки сообщения после 50 мс
  • Вернитесь в цикл обработки событий, чтобы позволить событиям WM_PAINT произойти
  • При получении сообщения таймера переместите прямоугольник, затем повторите

Этот способ прекрасно интегрируется с управлением событиями. Я понимаю, что это не совсем то, о чем вы просите, но я подумал, что все равно упомянул бы об этом как о возможном решении :)

EDIT: быстрый Google запускает вызов Windows API [SetTimer] ( http: / /msdn.microsoft.com/en-us/library/ms644906(VS.85,loband).aspx), который вы можете использовать для облегчения этого. Это будет сообщение WM_TIMER.

2
ответ дан 8 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: