home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / os2sdk / os2sdk11 / tk3 / clock / clock.c next >
Encoding:
C/C++ Source or Header  |  1989-02-20  |  2.3 KB  |  100 lines

  1. /*
  2.     clock.c    Presentation Manager Analog Clock Application
  3.     Created by Microsoft Corporation, 1989
  4. */
  5. #define INCL_PM
  6. #include <os2.h>
  7. #include <string.h>
  8. #include "res.h"
  9.  
  10. extern MRESULT CALLBACK ClkWndProc ( HWND , USHORT , MPARAM , MPARAM ) ;
  11.  
  12. int cdecl main ( int argc , char * argv [ ] ) ;
  13. BOOL ClkInit ( VOID ) ;
  14. HWND hwndFrame ;
  15. HAB hab ;
  16. HMQ hmq ;
  17. HSWITCH hsw ;
  18. extern HPS hps ;
  19. BOOL fStartAsIcon = FALSE ;
  20.  
  21. /*
  22.     main(argc, argv)    Main program
  23. */
  24. int cdecl main ( int argc , char * argv [ ] )
  25. {
  26.     QMSG qmsg ;
  27.  
  28.     /* have we been asked to start ourselves as an icon? */
  29.     if (argc > 0) {
  30.     if ( strcmpi ( argv [ 1 ] , "iconic" ) == 0 )
  31.         fStartAsIcon = TRUE ;
  32.     }
  33.  
  34.     if ( ClkInit ( ) ) {
  35.  
  36.     while ( WinGetMsg ( hab , & qmsg , NULL , 0 , 0 ) )
  37.         WinDispatchMsg ( hab , & qmsg ) ;
  38.  
  39.     /* Clean up code */
  40.     GpiDestroyPS( hps );
  41.     WinRemoveSwitchEntry ( hsw ) ;
  42.     WinDestroyWindow ( hwndFrame ) ;
  43.     WinDestroyMsgQueue ( hmq ) ;
  44.     WinTerminate ( hab ) ;
  45.     }
  46.  
  47.     return 0 ;
  48. }
  49.  
  50. /*
  51.     ClkInit()        Clock Initialization routine
  52.     Returns TRUE if successful.
  53. */
  54. BOOL ClkInit ( )
  55. {
  56.     /* application name, switch list info, and frame creation flags */
  57.     static PSZ pszClkName = "Clock" ;
  58.     static SWCNTRL swctl = { 0 , 0 , 0 , 0 , 0 , SWL_VISIBLE ,
  59.                  SWL_JUMPABLE , "Clock" , 0 } ;
  60.     static LONG fcf = FCF_SIZEBORDER | FCF_TITLEBAR | FCF_MINMAX
  61.               | FCF_SYSMENU ;
  62.  
  63.     HWND hwndClient ;
  64.     PID pid ;
  65.     TID tid ;
  66.  
  67.     if ( ( hab = WinInitialize ( NULL ) ) == NULL )
  68.     return FALSE ;
  69.  
  70.     if ( ( hmq = WinCreateMsgQueue ( hab , NULL ) ) == NULL ) {
  71.     WinTerminate ( hab ) ;
  72.     return FALSE ;
  73.     }
  74.  
  75.     if ( ! WinRegisterClass ( hab , pszClkName , ClkWndProc ,
  76.                   CS_SIZEREDRAW , 0 ) ) {
  77.     WinDestroyMsgQueue ( hmq ) ;
  78.     WinTerminate ( hab ) ;
  79.     return FALSE ;
  80.     }
  81.  
  82.     hwndFrame = WinCreateStdWindow ( HWND_DESKTOP , ( ULONG ) NULL , & fcf ,
  83.                      pszClkName , pszClkName , WS_VISIBLE ,
  84.                      NULL , ID_RESOURCE , & hwndClient ) ;
  85.  
  86.     if ( hwndFrame == NULL ) {
  87.     WinDestroyMsgQueue ( hmq ) ;
  88.     WinTerminate ( hab ) ;
  89.     return FALSE ;
  90.     }
  91.  
  92.     /* add ourselves to the switch list */
  93.     WinQueryWindowProcess ( hwndFrame , & pid , & tid ) ;
  94.     swctl . hwnd = hwndFrame ;
  95.     swctl . idProcess = pid ;
  96.     hsw = WinAddSwitchEntry ( & swctl ) ;
  97.  
  98.     return TRUE ;
  99. }
  100.