home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / CUSTCT.ZIP / TESTBED.C < prev    next >
C/C++ Source or Header  |  1992-08-26  |  9KB  |  289 lines

  1. #pragma    title("Test Bed Application  --  Version 2.00   -- (TestBed.C)")
  2. #pragma    subtitle("  main( ) -   Interface Definitions")
  3.  
  4. #define    INCL_DOS           /* Include OS/2 PM DOS Kernal    */
  5. #define    INCL_WIN           /* Include OS/2 PM Windows Interface    */
  6.  
  7. static char *PROGID = "@(#)testbed.c:2.00";
  8.  
  9. #include <os2.h>
  10.  
  11. #include "..\imagebtn.h"
  12.  
  13. #include "testbed.h"
  14.  
  15. /* This    is the main program module for the Test    Bed Application.  It    */
  16. /* performs program initialization/termination and provides the    main    */
  17. /* dispatch controller.     The program requires OS/2 Version 1.2 or    */
  18. /* above.                                */
  19. /*                                    */
  20. /* The application was created using Prominare Designer    and the    design    */
  21. /* is contained    within the TestBed.Des file.                */
  22. /*                                    */
  23. /* The application is built using the following    options    in Prominare    */
  24. /* Builder:                                */
  25. /*                                    */
  26. /* Option           Value                        */
  27. /* ------           -----                        */
  28. /* Memory Model           Small                        */
  29. /* Op Sys           OS/2 2.x    PM Normal                */
  30. /* Optimization           Debug                        */
  31. /* CPU               80386                        */
  32. /* Build Control       Compile Only                    */
  33. /*               Sub-system                    */
  34. /* Warning Level       3                        */
  35. /*                                    */
  36. /* Equivalent command line invocation of each module using the        */
  37. /* IBM C Set/2 Version 1.0 compiler is:                    */
  38. /*                                    */
  39. /*     Icc -C -G3 -O+ -Rn -W3 -Fofilename filename.C            */
  40.  
  41. /* Filename:   TestBed.C                        */
  42.  
  43. /*  Version:   2.00                            */
  44. /*  Created:   1991-06-07                        */
  45. /*  Revised:   1992-05-01                        */
  46.  
  47.  
  48. /* Copyright ╕ 1989-1992  Prominare Inc.  All Rights Reserved.        */
  49.  
  50. /* --------------------------------------------------------------------    */
  51.  
  52.  
  53. /* --- Module Definitions ---------------------------------------------    */
  54.  
  55. PSZ  pszTestBedClassName = "TestBed";
  56.  
  57. HAB  hAB;               /* Program Anchor Block Handle    */
  58. HMQ  hmqTestBed;           /* Program Message Queue Handle    */
  59. HWND hwndTestBed;           /* Client Window Handle        */
  60. HWND hwndTestBedFrame;           /* Frame Window Handle        */
  61. HWND hmenuTestBed;           /* Menu Handle            */
  62.  
  63. BOOL fState1 = TRUE;
  64.  
  65. MRESULT    EXPENTRY ImageBtnWndProc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  66. MRESULT    EXPENTRY TestWndProc(HWND hWnd,    ULONG msg, MPARAM mp1, MPARAM mp2);
  67. MRESULT    EXPENTRY TestDlgProc(HWND hWnd,    ULONG msg, MPARAM mp1, MPARAM mp2);
  68.  
  69. #pragma    subtitle("   Test Dialogues - Test Dialogue Procedure")
  70. #pragma    page( )
  71.  
  72. /* --- TestDlgProc ----------------------------------------------------    */
  73. /*                                    */
  74. /*     This function is    used to    process    the messages for the test    */
  75. /*     dialogue    procedure.                        */
  76. /*                                    */
  77. /*     Upon Entry:                            */
  78. /*                                    */
  79. /*     HWND   hWnd; = Dialog Window Handle                */
  80. /*     ULONG  msg;  = PM Message                    */
  81. /*     MPARAM mp1;  = Message Parameter    1                */
  82. /*     MPARAM mp2;  = Message Parameter    2                */
  83. /*                                    */
  84. /*     Upon Exit:                            */
  85. /*                                    */
  86. /*     TestDlgProc = Message Handling Result                */
  87. /*                                    */
  88. /* --------------------------------------------------------------------    */
  89.  
  90. MRESULT    EXPENTRY TestDlgProc(HWND hWnd,    ULONG msg, MPARAM mp1, MPARAM mp2)
  91.  
  92. {
  93. SWP swp;               /* Screen Window Position Holder    */
  94.  
  95. switch ( msg )
  96.    {
  97.                /* Perform dialog initialization            */
  98.    case    WM_INITDLG :
  99.                /* Centre dialog    on the screen            */
  100.  
  101.        WinQueryWindowPos(hWnd, (PSWP)&swp);
  102.        WinSetWindowPos(hWnd, HWND_TOP,
  103.                ((WinQuerySysValue(HWND_DESKTOP,    SV_CXSCREEN) - swp.cx) / 2),
  104.                ((WinQuerySysValue(HWND_DESKTOP,    SV_CYSCREEN) - swp.cy) / 2),
  105.                0, 0, SWP_MOVE);
  106.  
  107.        break;
  108.  
  109.             /* Process push    button selections        */
  110.    case    WM_COMMAND :
  111.     switch (SHORT1FROMMP(mp1) )
  112.         {
  113.        case    IB_BUTTON1 :
  114.            WinMessageBox(HWND_DESKTOP, hWnd, "Image Button 1 Pressed.",
  115.                  "Image Button Test", 0, MB_OK | MB_ICONASTERISK);
  116.     
  117.            if ( fState1 )
  118.            fState1 = FALSE;
  119.            else
  120.            fState1 = TRUE;
  121.  
  122.            WinEnableWindow(WinWindowFromID(hWnd, IB_BUTTON2), fState1);
  123.            break;
  124.  
  125.        case    IB_BUTTON2 :
  126.            WinMessageBox(HWND_DESKTOP, hWnd, "Image Button 2 Pressed.",
  127.                  "Image Button Test", 0, MB_OK | MB_ICONASTERISK);
  128.            break;
  129.  
  130.        case    IB_BUTTON3 :
  131.            WinMessageBox(HWND_DESKTOP, hWnd, "Image Button 3 Pressed.",
  132.                  "Image Button Test", 0, MB_OK | MB_ICONASTERISK);
  133.            break;
  134.  
  135.        case    IB_BUTTON4 :
  136.            WinMessageBox(HWND_DESKTOP, hWnd, "Image Button 4 Pressed.",
  137.                  "Image Button Test", 0, MB_OK | MB_ICONASTERISK);
  138.            break;
  139.  
  140.         case DID_OK    :
  141.         WinDismissDlg(hWnd, TRUE);
  142.         break;
  143.  
  144.         }
  145.     break;
  146.             /* Close requested, exit dialogue        */
  147.    case    WM_CLOSE :
  148.     WinDismissDlg(hWnd, FALSE);
  149.     break;
  150.             /* Pass    through    unhandled messages        */
  151.    default :
  152.        return(WinDefDlgProc(hWnd, msg, mp1, mp2));
  153.    }
  154. return(0L);
  155. }
  156. #pragma    subtitle("   Client Window - Client Window Procedure")
  157. #pragma    page( )
  158.  
  159. /* --- TestWndProc ----------------------------------------------------    */
  160. /*                                    */
  161. /*     This function is    used to    process    the messages sent to the    */
  162. /*     applications client window.                    */
  163. /*                                    */
  164. /*     Upon Entry:                            */
  165. /*                                    */
  166. /*     HWND   hWnd; = Window Handle                    */
  167. /*     ULONG  msg;  = PM Message                    */
  168. /*     MPARAM mp1;  = Message Parameter    1                */
  169. /*     MPARAM mp2;  = Message Parameter    2                */
  170. /*                                    */
  171. /*     Upon Exit:                            */
  172. /*                                    */
  173. /*     TestWndProc = Message Handling Result                */
  174. /*                                    */
  175. /* --------------------------------------------------------------------    */
  176.  
  177. MRESULT    EXPENTRY TestWndProc(HWND hWnd,    ULONG msg, MPARAM mp1, MPARAM mp2)
  178.  
  179. {
  180. RECTL rcl;               /* Window Rectangle            */
  181. HPS   hPS;               /* Presentation Space Handle        */
  182.  
  183. switch ( msg )
  184.    {
  185.             /* Close the application            */
  186.    case    WM_CLOSE :
  187.        WinPostMsg(hWnd,    WM_QUIT, 0L, 0L);
  188.        break;
  189.             /* Process menu    and button selections        */
  190.    case    WM_COMMAND :
  191.        switch (    SHORT1FROMMP(mp1) )
  192.        {
  193.        case    IDM_TEST :
  194.            WinDlgBox(HWND_DESKTOP, hwndTestBedFrame, (PFNWP)TestDlgProc,
  195.              (HMODULE)NULL,    DLG_TEST, NULL);
  196.            break;
  197.  
  198.        case    IDM_EXIT :
  199.            WinPostMsg(hWnd,    WM_CLOSE, 0L, 0L);
  200.            break;
  201.  
  202.        }
  203.        break;
  204.             /* Window being    destroyed, perform clean-up    */
  205.             /* operations                    */
  206.  
  207.    case    WM_ERASEBACKGROUND :
  208.        WinQueryWindowRect(hWnd,    &rcl);
  209.        WinFillRect((HPS)LONGFROMMP(mp1), &rcl, SYSCLR_WINDOW);
  210.        break;
  211.             /* Paint client    window                */
  212.    case    WM_PAINT :
  213.        WinFillRect(hPS = WinBeginPaint(hWnd, (HPS)NULL,    &rcl), &rcl, SYSCLR_WINDOW);
  214.        WinEndPaint(hPS);
  215.        break;
  216.             /* Default message processing            */
  217.    default :
  218.        return(WinDefWindowProc(hWnd, msg, mp1, mp2));
  219.    }
  220. return(0L);
  221. }
  222. #pragma    subtitle("   Client Window - Client Window Procedure")
  223. #pragma    page( )
  224.  
  225. /* --- main -----------------------------------------------------------    */
  226. /*                                    */
  227. /*     This function is    used to    process    the messages sent to the    */
  228. /*     applications client window.                    */
  229. /*                                    */
  230. /*     Upon Entry:                            */
  231. /*                                    */
  232. /*     INT  argc;     =    Argument Count                    */
  233. /*     CHAR *argv[ ]; =    Argument Vector                    */
  234. /*                                    */
  235. /*     Upon Exit:                            */
  236. /*                                    */
  237. /*     main = Return Result                        */
  238. /*                                    */
  239. /* --------------------------------------------------------------------    */
  240.  
  241. INT main(INT argc, CHAR    *argv[ ])
  242.  
  243. {
  244. QMSG  qmsg;               /* PM Message Queue Holder        */
  245. ULONG flCreateFlags;           /* Window Creation Flags        */
  246.  
  247.                /* Initialize the program for PM    and create the    */
  248.                /* message queue                    */
  249.  
  250. hmqTestBed = WinCreateMsgQueue(hAB = WinInitialize(0), 0);
  251.  
  252.                /* Register the window class            */
  253.  
  254. if ( !WinRegisterClass(hAB, pszTestBedClassName, (PFNWP)TestWndProc,
  255.                CS_SYNCPAINT | CS_SIZEREDRAW, 0)    )
  256.    return(0);
  257.  
  258. if ( !WinRegisterClass(hAB, "ImageBtn",    (PFNWP)ImageBtnWndProc,
  259.                CS_PARENTCLIP | CS_SYNCPAINT | CS_SIZEREDRAW, USER_RESERVED) )
  260.    return(0);
  261.                /* Create the main program window        */
  262.  
  263. flCreateFlags =    FCF_NOBYTEALIGN    | FCF_TASKLIST | FCF_TITLEBAR |    FCF_ICON | FCF_SYSMENU |
  264.         FCF_MENU | FCF_MINMAX |    FCF_ACCELTABLE | FCF_SIZEBORDER    | FCF_SHELLPOSITION;
  265. if ( !(hwndTestBedFrame    = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE, &flCreateFlags,
  266.                          pszTestBedClassName, "Test Bed Application", 0L,
  267.                          (HMODULE)NULL, ID_WINDOW, &hwndTestBed)) )
  268.    return(0);
  269.                /* Get and dispatch the message to program    */
  270.                /* windows                    */
  271.  
  272. while (    WinGetMsg(hAB, &qmsg, (HWND)NULL, 0, 0)    )
  273.    WinDispatchMsg(hAB, &qmsg);
  274.  
  275.                /* Have received    a WM_QUIT, start the program    */
  276.                /* shutdown by destroying the program windows    */
  277.                /* and destroying the message queue        */
  278.  
  279. WinDestroyWindow(hwndTestBedFrame);
  280. WinDestroyMsgQueue(hmqTestBed);
  281.  
  282.                /* Notify PM that main program thread not needed    */
  283.                /* any longer                    */
  284. WinTerminate(hAB);
  285.                /* Exit back to OS/2 cleanly            */
  286. DosExit(EXIT_PROCESS, 0);
  287. return(0);
  288. }
  289.