home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spiele Shareware / os2games.iso / os2games / addons / gi / c / pmtools / pmthread.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-16  |  2.7 KB  |  92 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /*   Main-Module   : none                                                   */
  4. /*                                                                          */
  5. /*   Version       : V1.00                                                  */
  6. /*                                                                          */
  7. /*   Date          : 15.10.92                                               */
  8. /*                                                                          */
  9. /*   Written       : MH                                                     */
  10. /*                                                                          */
  11. /*   Dependency    :                                                        */
  12. /*                                                                            */
  13. /*     Revision History :
  14.  
  15.     15.10.92    MH    Entfernen von PM-Threads
  16.                                                                             */
  17. /*--------------------------------------------------------------------------*/
  18. #ifndef PMTHREAD_INC
  19. #define PMTHREAD_INC
  20.  
  21. #define INCL_PM
  22. #include <thread.hpp>
  23. #include <os2.h>
  24. #include <std.h>
  25.  
  26. //----------------------------------------------------------------------------
  27. class PMTHREAD : public THREAD
  28.     {
  29.     private:
  30.         friend void APIENTRY PMThreadStarter (ULONG);
  31.  
  32.         void APIENTRY (*pmfunc) (ULONG);
  33.         void *pmdata;
  34.     protected:
  35.         HAB     hab;
  36.  
  37.     public:
  38.  
  39.         virtual ~PMTHREAD    ()
  40.             {
  41.             if (hab)
  42.                 {
  43.                 WinTerminate (hab);
  44.                 hab = 0;
  45.                 }
  46.             }
  47.  
  48.         PMTHREAD    () : THREAD() {hab = WinInitialize (0);};
  49.         PMTHREAD    (THREADFUNC func, BOOL start=FALSE);
  50.         PMTHREAD    (void *newdata, THREADFUNC func, BOOL start=FALSE);
  51.  
  52.         unsigned Start (THREADFUNC func = NULL, void *newdata = NULL);
  53.  
  54.         HAB Hab () {return hab;};
  55.     };
  56. //----------------------------------------------------------------------------
  57. class PMWINTHREAD : public PMTHREAD
  58.     {
  59.     protected:
  60.         virtual BOOL Init        (HAB, HMQ)  {return TRUE;};
  61.         virtual void ShutDown    (HAB, HMQ)    {};
  62.         virtual BOOL Control    (HAB, HMQ, QMSG *) {return TRUE;};
  63.         virtual BOOL End        (HAB, HMQ) {return TRUE;};
  64.  
  65.         HMQ            hmq;
  66.         QMSG        qmsg;
  67.  
  68.     public:
  69.  
  70.         HMQ Hmq () {return hmq;};
  71.         void Loop (void);
  72.         ~PMWINTHREAD    ()
  73.             {
  74.             if (hmq)
  75.                 {
  76.                 WinDestroyMsgQueue(hmq);
  77.                 hmq = 0;
  78.                 }
  79.             }
  80.  
  81.         PMWINTHREAD    (BOOL start = FALSE) : PMTHREAD()
  82.                         {
  83.                         hmq = WinCreateMsgQueue(hab, 0);
  84.                         if (start)
  85.                             Loop ();
  86.                         };
  87.         BOOL HasActiveWin () {return ((BOOL)WinIsThreadActive (hab));};
  88.     };
  89. //----------------------------------------------------------------------------
  90. #endif
  91.  
  92.