home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / tools / make / cmake / samples / windows / hw.c next >
Encoding:
C/C++ Source or Header  |  1991-11-16  |  4.0 KB  |  184 lines

  1. /* hw.c - Windows program with "Hello World" icon */
  2.  
  3. #include <windows.h>
  4. #include "hw.h"
  5. /* CMAKE - INCLUDE END */
  6.  
  7. HANDLE hInst ;
  8.  
  9. int PASCAL WinMain ( HANDLE hInstance     ,
  10.                      HANDLE hPrevInstance ,
  11.                      LPSTR  lpCmdLine     ,
  12.                      int    nCmdShow        )
  13.  
  14. {
  15. WNDCLASS wc      ;
  16. HWND     hWnd    ;
  17. MSG      message ;
  18.  
  19. if ( ! hPrevInstance )
  20.  
  21.    {
  22.    wc.style = NULL ;
  23.  
  24.    wc.lpfnWndProc = MainWndProc ;
  25.  
  26.    wc.cbClsExtra = 0 ;
  27.  
  28.    wc.cbWndExtra = 0 ;
  29.  
  30.    wc.hInstance = hInstance ;
  31.  
  32.    wc.hIcon = LoadIcon ( hInstance    ,
  33.                          "HelloWorld"   ) ;
  34.  
  35.    wc.hCursor = LoadCursor ( NULL      ,
  36.                              IDC_ARROW   ) ;
  37.  
  38.    wc.hbrBackground = GetStockObject ( WHITE_BRUSH ) ;
  39.  
  40.    wc.lpszMenuName =  "HWMenu" ;
  41.  
  42.    wc.lpszClassName = "HWWClass" ;
  43.  
  44.    if ( ! ( RegisterClass ( & wc ) ) )
  45.  
  46.       {
  47.       return ( FALSE ) ;
  48.       }
  49.    }
  50.  
  51. hInst = hInstance ;
  52.  
  53. if ( ! ( hWnd = CreateWindow ( "HWWClass"           ,
  54.                                "Sample Program"     ,
  55.                                WS_OVERLAPPEDWINDOW  ,
  56.                                CW_USEDEFAULT        ,
  57.                                CW_USEDEFAULT        ,
  58.                                CW_USEDEFAULT        ,
  59.                                CW_USEDEFAULT        ,
  60.                                NULL                 ,
  61.                                NULL                 ,
  62.                                hInstance            ,
  63.                                NULL                   ) ) )
  64.  
  65.    {
  66.    return ( FALSE ) ;
  67.    }
  68.  
  69. else
  70.  
  71.    {
  72.    ShowWindow ( hWnd     ,
  73.                 nCmdShow   ) ;
  74.  
  75.    UpdateWindow ( hWnd ) ;
  76.    }
  77.  
  78. while ( GetMessage ( & message ,
  79.                      NULL      ,
  80.                      NULL      ,
  81.                      NULL        ) )
  82.       {
  83.       TranslateMessage ( & message ) ;
  84.  
  85.       DispatchMessage ( & message ) ;
  86.       }
  87.  
  88. return ( message
  89.            .wParam ) ;
  90. }
  91.  
  92.  
  93. long FAR PASCAL MainWndProc ( HWND     hWnd    ,
  94.                               unsigned message ,
  95.                               WORD     wParam  ,
  96.                               LONG     lParam    )
  97.  
  98. {
  99. FARPROC lpProcAbout ;
  100.  
  101. switch ( message )
  102.  
  103.        {
  104.        case WM_COMMAND :
  105.  
  106.             if (    wParam
  107.                  == IDM_ABOUT )
  108.  
  109.                {
  110.                lpProcAbout = MakeProcInstance ( About ,
  111.                                                 hInst   ) ;
  112.  
  113.                DialogBox ( hInst       ,
  114.                            "AboutBox"  ,
  115.                            hWnd        ,
  116.                            lpProcAbout   ) ;
  117.  
  118.                 FreeProcInstance ( lpProcAbout ) ;
  119.  
  120.                 break ;
  121.                 }
  122.  
  123.             else
  124.  
  125.                 {
  126.                 return ( DefWindowProc ( hWnd    ,
  127.                                          message ,
  128.                                          wParam  ,
  129.                                          lParam    ) ) ;
  130.                 }
  131.  
  132.        case WM_DESTROY :
  133.  
  134.             PostQuitMessage ( 0 ) ;
  135.  
  136.             break ;
  137.  
  138.        default :
  139.  
  140.             return ( DefWindowProc ( hWnd    ,
  141.                                      message ,
  142.                                      wParam  ,
  143.                                      lParam    ) ) ;
  144.  
  145.             break ;
  146.        }
  147.  
  148. return ( NULL ) ;
  149. }
  150.  
  151.  
  152. BOOL FAR PASCAL About ( HWND     hDlg    ,
  153.                         unsigned message ,
  154.                         WORD     wParam  ,
  155.                         LONG     lParam    )
  156.  
  157. {
  158. switch ( message )
  159.  
  160.        {
  161.        case WM_INITDIALOG :
  162.  
  163.             return ( TRUE ) ;
  164.  
  165.        case WM_COMMAND :
  166.  
  167.             if (    (    wParam
  168.                       == IDOK   )
  169.                  || (    wParam
  170.                       == IDCANCEL ) )
  171.  
  172.                {
  173.                EndDialog ( hDlg ,
  174.                            TRUE   ) ;
  175.  
  176.                return ( TRUE ) ;
  177.                }
  178.  
  179.             break ;
  180.        }
  181.  
  182. return ( FALSE ) ;
  183. }
  184.