home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / os2sdk / os2sdk11 / petzold / chap14 / sqabout.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-20  |  2.8 KB  |  89 lines

  1. /*---------------------------------------------------------------
  2.    SQABOUT.C -- Demonstration of About Box with Square 3D Button
  3.   ---------------------------------------------------------------*/
  4.  
  5. #define INCL_WIN
  6. #include <os2.h>
  7. #include "aboutbox.h"
  8.  
  9. VOID RegisterSqBtnClass (HAB) ;         // In SQBTN.C
  10.  
  11. MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
  12. MRESULT EXPENTRY AboutDlgProc  (HWND, USHORT, MPARAM, MPARAM) ;
  13.  
  14. int main (void)
  15.      {
  16.      static CHAR  szClientClass[] = "SqAbout" ;
  17.      static ULONG flFrameFlags = FCF_TITLEBAR      | FCF_SYSMENU  |
  18.                                  FCF_SIZEBORDER    | FCF_MINMAX   |
  19.                                  FCF_SHELLPOSITION | FCF_TASKLIST |
  20.                                  FCF_MENU          | FCF_ICON ;
  21.      HAB          hab ;
  22.      HMQ          hmq ;
  23.      HWND         hwndFrame, hwndClient ;
  24.      QMSG         qmsg ;
  25.  
  26.      hab = WinInitialize (0) ;
  27.      hmq = WinCreateMsgQueue (hab, 0) ;
  28.  
  29.      RegisterSqBtnClass (hab) ;
  30.  
  31.      WinRegisterClass (hab, szClientClass, ClientWndProc, 0L, 0) ;
  32.  
  33.      hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE,
  34.                                      &flFrameFlags, szClientClass, NULL,
  35.                      0L, NULL, ID_RESOURCE, &hwndClient) ;
  36.  
  37.      while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
  38.           WinDispatchMsg (hab, &qmsg) ;
  39.  
  40.      WinDestroyWindow (hwndFrame) ;
  41.      WinDestroyMsgQueue (hmq) ;
  42.      WinTerminate (hab) ;
  43.      return 0 ;
  44.      }
  45.  
  46. MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  47.      {
  48.      switch (msg)
  49.           {
  50.           case WM_COMMAND:
  51.                switch (COMMANDMSG(&msg)->cmd)
  52.                     {
  53.                     case IDM_NEW:
  54.                     case IDM_OPEN:
  55.                     case IDM_SAVE:
  56.                     case IDM_SAVEAS:
  57.                          WinAlarm (HWND_DESKTOP, WA_NOTE) ;
  58.                          return 0 ;
  59.  
  60.                     case IDM_ABOUT:
  61.                          WinDlgBox (HWND_DESKTOP, hwnd, AboutDlgProc,
  62.                                     NULL, IDD_ABOUT, NULL) ;
  63.                          return 0 ;
  64.                     }
  65.                break ;
  66.  
  67.           case WM_ERASEBACKGROUND:
  68.                return 1 ;
  69.           }
  70.      return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
  71.      }
  72.  
  73. MRESULT EXPENTRY AboutDlgProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  74.      {
  75.      switch (msg)
  76.           {
  77.           case WM_COMMAND:
  78.                switch (COMMANDMSG(&msg)->cmd)
  79.                     {
  80.                     case DID_OK:
  81.                     case DID_CANCEL:
  82.                          WinDismissDlg (hwnd, TRUE) ;
  83.                          return 0 ;
  84.                     }
  85.                break ;
  86.           }
  87.      return WinDefDlgProc (hwnd, msg, mp1, mp2) ;
  88.      }
  89.