home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sftick.zip / beg / dialog / DIALOG.C < prev    next >
Text File  |  1994-04-09  |  4KB  |  149 lines

  1. #define INCL_WIN
  2.  
  3. #include <os2.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include "dialog.h"
  8.  
  9. #define CLS_CLIENT               "MyClass"
  10.  
  11. MRESULT EXPENTRY ClientWndProc ( HWND hwndWnd,
  12.                                ULONG ulMsg,
  13.                                MPARAM mpParm1,
  14.                                MPARAM mpParm2 ) ;
  15.  
  16. MRESULT EXPENTRY DlgProc ( HWND hwndWnd,
  17.                            ULONG ulMsg,
  18.                            MPARAM mpParm1,
  19.                            MPARAM mpParm2 ) ;
  20.  
  21. INT main ( VOID )
  22. {
  23.    HAB          habAnchor ;
  24.    HMQ          hmqQueue ;
  25.    ULONG        ulFlags ;
  26.    HWND         hwndFrame ;
  27.    HWND         hwndClient ;
  28.    QMSG         qmMsg ;
  29.  
  30.    /* initialization */
  31.    habAnchor = WinInitialize ( 0 ) ;
  32.    hmqQueue = WinCreateMsgQueue ( habAnchor, 0 ) ;
  33.  
  34.    /* register class for client window */
  35.    WinRegisterClass ( habAnchor,
  36.                       CLS_CLIENT,
  37.                       ClientWndProc,
  38.                       CS_SIZEREDRAW,
  39.                       0 ) ;
  40.  
  41.    ulFlags = FCF_STANDARD & ~FCF_ACCELTABLE &
  42.               ~FCF_TASKLIST ;
  43.  
  44.    /* create frame and others */
  45.    hwndFrame = WinCreateStdWindow ( HWND_DESKTOP,
  46.                                     WS_VISIBLE,
  47.                                     &ulFlags,
  48.                                     CLS_CLIENT,
  49.                                     "Dialog Box Example",
  50.                                     0,
  51.                                     NULLHANDLE,
  52.                                     IDR_CLIENT,
  53.                                     &hwndClient ) ;
  54.  
  55.    if ( hwndFrame ) {
  56.  
  57.       /* typical message processing loop */
  58.       while (  WinGetMsg ( habAnchor, &qmMsg, NULLHANDLE, 0, 0 ))
  59.          WinDispatchMsg ( habAnchor, &qmMsg ) ;
  60.  
  61.       WinDestroyWindow ( hwndFrame ) ;
  62.    } /* endif */
  63.  
  64.    WinDestroyMsgQueue ( hmqQueue ) ;
  65.    WinTerminate ( habAnchor ) ;
  66.    return 0 ;
  67. }
  68.  
  69. MRESULT EXPENTRY DlgProc ( HWND hwndWnd,
  70.                            ULONG ulMsg,
  71.                            MPARAM mpParm1,
  72.                            MPARAM mpParm2 )
  73. {
  74.    switch ( ulMsg ) {
  75.  
  76.    case WM_COMMAND:
  77.  
  78.       switch ( SHORT1FROMMP ( mpParm1 )) {
  79.          case DID_OK:
  80.          case DID_CANCEL:
  81.             WinDismissDlg ( hwndWnd, FALSE ) ;
  82.             break ;
  83.  
  84.          default:
  85.             return WinDefWindowProc ( hwndWnd,
  86.                                    ulMsg,
  87.                                    mpParm1,
  88.                                    mpParm2 ) ;
  89.       } /* endswitch */
  90.       break ;
  91.  
  92.    default:
  93.       return WinDefWindowProc ( hwndWnd, ulMsg, mpParm1, mpParm2 ) ;
  94.    } /* endswitch */
  95.  
  96.    return MRFROMSHORT ( FALSE ) ;
  97. }
  98.  
  99. MRESULT EXPENTRY ClientWndProc ( HWND hwndWnd,
  100.                                ULONG ulMsg,
  101.                                MPARAM mpParm1,
  102.                                MPARAM mpParm2 )
  103. {
  104.    switch ( ulMsg ) {
  105.  
  106.     /* not processing WM_PAINT, so process this instead */
  107.    case WM_ERASEBACKGROUND:
  108.       return MRFROMSHORT ( TRUE ) ;
  109.  
  110.    case WM_COMMAND:
  111.  
  112.       switch ( SHORT1FROMMP ( mpParm1 )) {
  113.  
  114.         /* user hit LOAD DIALOG from menu */
  115.       case IDM_LOAD:
  116.          {
  117.             /* load dialog box */
  118.             WinDlgBox ( HWND_DESKTOP,
  119.                         hwndWnd,
  120.                         DlgProc,
  121.                         NULLHANDLE,
  122.                         IDD_EXAMPLE,
  123.                         0 ) ;
  124.          }
  125.          break ;
  126.  
  127.         /* user hit EXIT from menu */
  128.       case IDM_EXIT:
  129.          WinPostMsg ( hwndWnd, WM_CLOSE, 0, 0 ) ;
  130.          break ;
  131.  
  132.       default:
  133.          return WinDefWindowProc ( hwndWnd,
  134.                                    ulMsg,
  135.                                    mpParm1,
  136.                                    mpParm2 ) ;
  137.       } /* endswitch mpParm1 */
  138.       break ;
  139.    default:
  140.       return WinDefWindowProc ( hwndWnd,
  141.                                 ulMsg,
  142.                                 mpParm1,
  143.                                 mpParm2 ) ;
  144.    } /* endswitch  ulMsg */
  145.  
  146.    return MRFROMSHORT ( FALSE ) ;
  147. }
  148.  
  149.