home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / prog_pm / chap14 / aboutbox.c next >
Encoding:
C/C++ Source or Header  |  1989-01-09  |  2.7 KB  |  85 lines

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