YYXMSG.CPP
上传用户:wtrl82617
上传日期:2007-01-07
资源大小:187k
文件大小:1k
源码类别:

界面编程

开发平台:

DOS

  1. // 1993 (c) ALL RIGHTS RESERVED
  2. // AUTHOR  BY XuYongYong
  3. /*  yyxmsg.cpp
  4. */
  5. #include "yyxmsg.h"
  6. #include "yyxmain.h"
  7. MSGQueue::MSGQueue()
  8. {
  9. this->Reset();
  10. }
  11. void MSGQueue::SendMessage (long int ID,long int Action,void *fptr)
  12. {   asm cli;
  13. msg_array[first].ID =ID;
  14. msg_array[first].Action =Action;
  15. msg_array[first].fptr =fptr;
  16.     oldfirst =first;
  17. first -=1;
  18. if ( first <0 )  first=MAXMSGNUM;
  19. if ( last==first ) {
  20. // puts("070707MSGQueue Overflow");
  21. // exit (100);
  22. error("070707MSGQueue Overflow");
  23. }
  24. asm sti;
  25. }
  26. BOOL MSGQueue::GetMessage (MSG& message)
  27. {
  28. if ( first ==last ) return FALSE;
  29. message=msg_array[last];
  30. last -=1;
  31. if ( last <0)  last =MAXMSGNUM;
  32. return TRUE;
  33. }
  34. BOOL MSGQueue::PeekMessage (MSG& message)
  35. {
  36. if ( first ==last ) return FALSE;
  37. message=msg_array[last];
  38. return TRUE;
  39. }
  40. BOOL MSGQueue::QueueFull ()
  41. { register int i;
  42. i = last - first;
  43. if ( i<0 ) i +=MAXMSGNUM;
  44. if ( i >= MSGFULLNUM ) return TRUE;
  45. return FALSE;
  46. }
  47. void MSGQueue::Reset ()
  48. {
  49. first=last;
  50. }
  51. MSGQueue::~MSGQueue()
  52. {
  53. }