home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / info / prgramer / edmi / issue_1 / intropm / step01.c next >
Text File  |  1993-02-24  |  2KB  |  91 lines

  1.  
  2.  
  3.  /* Definitions */
  4.  
  5.  #define INCL_WINFRAMEMGR
  6.  
  7.  #define MYAPP           "MyApp"
  8.  #define ID_MYWINDOW     42
  9.  
  10.  /* Includes */
  11.  
  12.  #include <os2.h>
  13.  
  14.  /* Prototypes */
  15.  
  16.  MRESULT EXPENTRY MyWinProc (HWND, ULONG, MPARAM, MPARAM);
  17.  
  18.  /* Global Variables */
  19.  
  20.  HAB     hab;
  21.  HWND    hwndClient,
  22.          hwndFrame;
  23.  
  24.  /* main function */
  25.  
  26.  void main (void)
  27.  {
  28.      HMQ     hmq;
  29.      QMSG    qmsg;
  30.      ULONG   flCreate;
  31.  
  32.      hab = WinInitialize (0);
  33.      if (!hab)
  34.          return;
  35.  
  36.      hmq = WinCreateMsgQueue (hab, 0);
  37.      WinRegisterClass(
  38.          hab,
  39.          MYAPP,
  40.          (PFNWP) MyWinProc,
  41.          CS_SIZEREDRAW,
  42.          0);
  43.  
  44.      flCreate =  FCF_TITLEBAR    | FCF_SYSMENU       |
  45.                  FCF_SIZEBORDER  | FCF_MINMAX        |
  46.                  FCF_TASKLIST    | FCF_SHELLPOSITION ;
  47.  
  48.      hwndFrame = WinCreateStdWindow(
  49.          HWND_DESKTOP,
  50.          WS_VISIBLE,
  51.          &flCreate,
  52.          MYAPP,
  53.          "Sample PM App",
  54.          0L,
  55.          NULLHANDLE,
  56.          ID_MYWINDOW,
  57.          &hwndClient);
  58.  
  59.      while (WinGetMsg (hab,&qmsg,(HWND)NULL,0,0))
  60.          WinDispatchMsg (hab,&qmsg);
  61.  
  62.      WinDestroyWindow(hwndFrame);
  63.      WinDestroyMsgQueue(hmq);
  64.      WinTerminate(hab);
  65.  }
  66.  
  67.  /* our window procedure */
  68.  
  69.  MRESULT EXPENTRY MyWinProc (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  70.  {
  71.      switch (msg)
  72.      {
  73.          case WM_ERASEBACKGROUND:
  74.              return (MRESULT) TRUE;
  75.              break;
  76.  
  77.          case WM_CLOSE:
  78.              if (WinMessageBox(HWND_DESKTOP,HWND_DESKTOP,
  79.                                "Are you sure you want to quit?","Sample",
  80.                                0,MB_YESNO | MB_QUERY) == MBID_YES)
  81.                  WinPostMsg(hwnd,WM_QUIT,0L,0L);
  82.          break;
  83.  
  84.          default:
  85.              return WinDefWindowProc (hwnd, msg, mp1, mp2);
  86.      }
  87.      return FALSE;
  88.  }
  89.    
  90.  
  91.