#define let void
#define with std::function

//  롮 ᮮ饭 

let ReadMessages (HAB Thread, with <void (PQMSG)> DispatchMessage)
{
  // ⠥ ᮮ饭  ।.
  QMSG Message = {0}; ULONG Rc = 1;

  while (Rc)
  {
    // ࠥ ᮮ饭.
    Rc = WinGetMsg (Thread, &Message, 0, 0, 0);

    // ᫨ 롮    :
    if (Rc)
    {
      // ஢塞,    ᫥  ࠭ ᮮ饭   ⠪  ᮮ饭.
      BYTE Same_message = 0; QMSG Next_message = {0}; 

      WinPeekMsg (Thread, &Next_message, NULLHANDLE, Message.msg, Message.msg, PM_NOREMOVE);

      if (Next_message.msg  == Message.msg &&
          Next_message.mp1  == Message.mp1 &&
          Next_message.mp2  == Message.mp2 &&
          Next_message.hwnd == Message.hwnd) Same_message = 1;

      // 믮塞 ⢨  த 롮 ᮮ饭.
      if (!Same_message)
      {
        DispatchMessage (&Message);
      }
      else
      {
        ;
      }
    }
    else
    {
      break;
    }
  }
}