home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / MATH / VISSIM.ZIP / CUSTDLG.C < prev    next >
C/C++ Source or Header  |  1994-02-10  |  3KB  |  177 lines

  1. #include <windows.h>    // standard windows include file
  2. #include <windowsx.h>    // windows macros for portability
  3. #include <vsuser.h>    // vissim function prototypes
  4. #include <custdlg.h>    // custdlg type definitions and literals
  5.  
  6. /* globals */
  7.  
  8. HINSTANCE DLLInst;
  9.  
  10.  
  11. /* simulation start function */
  12.  
  13. void FAR PASCAL custdlgSS(params, runCount)
  14. double FAR params[];
  15. long FAR *runCount;
  16. {
  17.  
  18.  
  19. } /* custdlgSS */
  20.  
  21.  
  22. /* simulation step function */
  23.  
  24. void FAR PASCAL custdlg(params, insig, outsig)
  25. double FAR params[];
  26. double FAR insig[];
  27. double FAR outsig[];
  28. {
  29.  
  30.  
  31. } /* custdlg */
  32.  
  33.  
  34. /* simulation end function */
  35.  
  36. void FAR PASCAL custdlgSE(params)
  37. double FAR params[];
  38. {
  39.  
  40.  
  41. } /* custdlgSE */
  42.  
  43.  
  44. /* parameter allocation function */
  45.  
  46. long FAR PASCAL custdlgPA(pCount)
  47. short FAR *pCount;
  48. {
  49.     *pCount = 0;
  50.     return (sizeof(TEMP_STRUCT));
  51.  
  52. } /* custdlgPA */
  53.  
  54.  
  55. /* parameter initialization function */
  56.  
  57. void FAR PASCAL custdlgPI(values)
  58. TEMP_STRUCT FAR *values;
  59. {
  60.  
  61.     values->iInfMethod = INF_MAX_MIN;
  62.     values->iDefuzMethod = DEFUZ_YAGERS;
  63.  
  64. } /* custdlgPI */
  65.  
  66.  
  67. /* parameter change function */
  68.  
  69. char FAR * PASCAL custdlgPC(values)
  70. TEMP_STRUCT FAR *values;
  71. {
  72.     FARPROC lpfnProc;
  73.  
  74.     lpfnProc = MakeProcInstance(CustomDlgProc, DLLInst);
  75.     DialogBoxParam(DLLInst, "CUSTDLG", NULL, lpfnProc, (LPARAM) values);
  76.     FreeProcInstance(lpfnProc);
  77.  
  78.     return NULL;
  79.  
  80. } /* custdlgPC */
  81.  
  82.  
  83. /* parameter change dialog procedure */
  84.  
  85. BOOL FAR PASCAL CustomDlgProc(hDlg, msg, wParam, lParam)
  86. HWND hDlg;
  87. UINT msg;
  88. WPARAM wParam;
  89. LPARAM lParam;
  90. {
  91.  
  92.     static TEMP_STRUCT FAR *data;
  93.     int iInference, iDefuz;
  94.  
  95.     switch (msg) {
  96.  
  97.     case WM_INITDIALOG:
  98.     
  99.         /* initialize the dialog box fields */
  100.         
  101.         data = (TEMP_STRUCT FAR *) lParam;
  102.         iInference = IDD_FIRST_INFERENCE + data->iInfMethod;
  103.         iDefuz = IDD_FIRST_DEFUZ + data->iDefuzMethod;
  104.         CheckRadioButton(hDlg, IDD_MINMAX, IDD_BOUNDSUMPROD, iInference);
  105.         CheckRadioButton(hDlg, IDD_YAGER, IDD_MAXHEIGHT, iDefuz);
  106.         break;
  107.  
  108.     case WM_COMMAND:
  109.  
  110.         switch (GET_WM_COMMAND_ID(wParam, lParam)) {
  111.  
  112.         case IDCANCEL:
  113.             EndDialog(hDlg, FALSE);
  114.             break;
  115.  
  116.         case IDOK:
  117.  
  118.             /* read the new values */
  119.  
  120.             if (Button_GetCheck(GetDlgItem(hDlg, IDD_MINMAX)))
  121.                 data->iInfMethod = INF_MAX_MIN;
  122.             else if (Button_GetCheck(GetDlgItem(hDlg, IDD_SUMPROD)))
  123.                 data->iInfMethod = INF_SUM_PRODUCT;
  124.             else
  125.                 data->iInfMethod = INF_BOUNDED_SUM;
  126.  
  127.             if (Button_GetCheck(GetDlgItem(hDlg, IDD_YAGER)))
  128.                 data->iDefuzMethod = DEFUZ_YAGERS;
  129.             else if (Button_GetCheck(GetDlgItem(hDlg, IDD_CENTER)))
  130.                 data->iDefuzMethod = DEFUZ_CENTER_GRAVITY;
  131.             else
  132.                 data->iDefuzMethod = DEFUZ_MAX_HEIGHT;
  133.  
  134.             EndDialog(hDlg, TRUE);
  135.             break;
  136.         }
  137.         return TRUE;
  138.     }
  139.     return FALSE;
  140.  
  141. } /* CustomDlgProc */
  142.  
  143.  
  144. /* DLL entry point */
  145.  
  146. int FAR PASCAL LibMain(hInstance, wDataSeg, cbHeapSize, lpszCmdLine)
  147. HINSTANCE hInstance;
  148. WORD wDataSeg;
  149. WORD cbHeapSize;
  150. LPSTR lpszCmdLine;
  151. {
  152.  
  153. #ifdef UNIX
  154.     LibFunc("custdlg", custdlg);
  155.     LibFunc("custdlgPA", custdlgPA);
  156.     LibFunc("custdlgPI", custdlgPI);
  157.     LibFunc("custdlgPC", custdlgPC);
  158.     LibFunc("custdlgSE", custdlgSE);
  159.     LibFunc("custdlgSS", custdlgSS);
  160. #endif
  161.  
  162.     DLLInst = hInstance;
  163.     return TRUE;
  164.  
  165. } /* LibMain */
  166.  
  167.  
  168. /* DLL exit procedure */
  169.  
  170. int FAR PASCAL WEP(nParameter)
  171. int nParameter;
  172. {
  173.  
  174.     return 1;
  175.  
  176. } /* WEP */
  177.