home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / dovetail.zip / pdlgproc.cc < prev    next >
C/C++ Source or Header  |  1994-04-06  |  6KB  |  195 lines

  1.  
  2. //**************************************************************************
  3. #define INCL_WIN
  4. #include <os2.h>
  5. #include <stdlib.h>
  6. #include "dove.h"
  7. #include "process.h"
  8. #include "slider.h"
  9. #include "rbutton.h"
  10. #include "sbutton.h"
  11. //**************************************************************************
  12.  
  13.  
  14. extern "C"
  15.  {
  16.    // This function must be exported so don't mangle the name
  17.  
  18.    MRESULT EXPENTRY ParmDlgProc (HWND, USHORT, MPARAM, MPARAM);
  19.  }
  20. MRESULT EXPENTRY ParmDlgProc (HWND    hwnd,
  21.                                    USHORT  msg,
  22.                                    MPARAM  mp1,
  23.                                    MPARAM  mp2)
  24.  
  25.   {// Variable Declarations
  26.     static Slider *psTailPin=NULL,
  27.                   *psMidEdge=NULL,
  28.                   *psEndPin =NULL,
  29.                   *psSlope  =NULL;
  30.     static Rbutton *prMultOrAdd = NULL;
  31.     static Sbutton *psNumTails = NULL;
  32.     extern HWND hMain;
  33.     extern int ok_to_post;
  34.     int invalid,i;
  35.  
  36.    invalid=0;
  37.    switch(msg) {
  38.      case UM_UPDATE:
  39.         ok_to_post = 0;
  40.         psNumTails->SetValue(iNumTails);
  41.         psTailPin->SetArmPos(fTailPinRatio);
  42.         psSlope->SetArmPos(fSlope);
  43.         psMidEdge->SetArmPos(fMidEdgeRatio);
  44.         psEndPin->SetArmPos(fEndPinSize);
  45.         ok_to_post = 1;
  46.         break;
  47.      case WM_INITDLG:
  48.         float *vals = new float[10];
  49.         psTailPin = new Slider(hwnd,ID_TAILPINRATIO);
  50.         psTailPin->SetTicks();
  51.         psTailPin->SetTickText(0,".5");
  52.         psTailPin->SetTickText(1,"1");
  53.         psTailPin->SetTickText(2,"2");
  54.         psTailPin->SetTickText(3,"3");
  55.         psTailPin->SetTickText(4,"4");
  56.         psTailPin->SetTickText(5,"K");
  57.         psTailPin->SetDetent(1.);
  58.         psTailPin->SetDetent(2.);
  59.         vals[0] = .5;
  60.         vals[1] = 1.;
  61.         vals[2] = 2.;
  62.         vals[3] = 3.;
  63.         vals[4] = 4.;
  64.         vals[5] = 5.;
  65.         psTailPin->SetTickVals(vals);
  66.         psTailPin->SetArmPos(fTailPinRatio);
  67.         psSlope = new Slider(hwnd,ID_SLOPE);
  68.         psSlope->SetTicks();
  69.         psSlope->SetTickText(0,"4");
  70.         psSlope->SetTickText(2,"6");
  71.         psSlope->SetTickText(4,"8");
  72.         psSlope->SetTickText(6,"10");
  73.         vals[0] = 4.;
  74.         vals[1] = 5.;
  75.         vals[2] = 6.;
  76.         vals[3] = 7.;
  77.         vals[4] = 8.;
  78.         vals[5] = 9.;
  79.         vals[6] = 10.;
  80.         psSlope->SetTickVals(vals);
  81.         psSlope->SetDetent(2.);
  82.         psSlope->SetDetent(4.);
  83.         psSlope->SetArmPos(fSlope);
  84.         psMidEdge = new Slider(hwnd,ID_MIDEDGERATIO);
  85.         psMidEdge->SetTicks();
  86.         psMidEdge->SetTickText(0,".5");
  87.         psMidEdge->SetTickText(1,"1");
  88.         psMidEdge->SetTickText(2,"2");
  89.         psMidEdge->SetTickText(3,"4");
  90.         vals[0] = .5;
  91.         vals[1] = 1.;
  92.         vals[2] = 2.;
  93.         vals[3] = 4.;
  94.         psMidEdge->SetTickVals(vals);
  95.         psMidEdge->SetDetent(1.);
  96.         psMidEdge->SetArmPos(fMidEdgeRatio);
  97.         psEndPin = new Slider(hwnd,ID_ENDPINSIZE);
  98.         psEndPin->SetTicks();
  99.         psEndPin->SetTickText(0,"K");
  100.         psEndPin->SetTickText(1,".5");
  101.         psEndPin->SetTickText(2,".75");
  102.         psEndPin->SetTickText(3,"1");
  103.         psEndPin->SetTickText(4,"2");
  104.         psEndPin->SetTickText(5,"4");
  105.         vals[0] = 0.;
  106.         vals[1] = .5;
  107.         vals[2] = .75;
  108.         vals[3] = 1.;
  109.         vals[4] = 2.;
  110.         vals[5] = 4.;
  111.         psEndPin->SetTickVals(vals);
  112.         delete vals;
  113.         psEndPin->SetDetent(1.);
  114.         psEndPin->SetDetent(2.);
  115.         psEndPin->SetArmPos(fEndPinSize);
  116.         ULONG ids[] = {ID_MULT,ID_ADD,0};
  117.         prMultOrAdd = new Rbutton(hwnd,ids);
  118.         prMultOrAdd->SetState(1);
  119.         i=iNumTails;
  120.         psNumTails = new Sbutton(hwnd,ID_NUMTAILS);
  121.         psNumTails->SetRange(1,40); // this call resets iNumTails
  122.         iNumTails = i;
  123.         psNumTails->SetValue(iNumTails);
  124.         ok_to_post = 1;
  125.         invalid=1;
  126.         break;
  127.      case WM_CONTROL:
  128.         switch(SHORT1FROMMP(mp1)) {
  129.            case ID_TAILPINRATIO:
  130.              if(SHORT2FROMMP(mp1) == SLN_CHANGE ||
  131.                 SHORT2FROMMP(mp1) == SLN_SLIDERTRACK) {
  132.                 float t = (float) *psTailPin;
  133.                 if(t != fTailPinRatio) {
  134.                    fTailPinRatio = t;
  135.                    invalid = 1;
  136.                 }
  137.              }
  138.              break;
  139.            case ID_ENDPINSIZE:
  140.              if(SHORT2FROMMP(mp1) == SLN_CHANGE ||
  141.                 SHORT2FROMMP(mp1) == SLN_SLIDERTRACK) {
  142.                 float t = (float) *psEndPin;
  143.                 if(t != fEndPinSize) {
  144.                    fEndPinSize = t;
  145.                    invalid = 1;
  146.                 }
  147.              }
  148.              break;
  149.            case ID_MIDEDGERATIO:
  150.              if(SHORT2FROMMP(mp1) == SLN_CHANGE ||
  151.                 SHORT2FROMMP(mp1) == SLN_SLIDERTRACK) {
  152.                 float t = (float) *psMidEdge;
  153.                 if(t != fMidEdgeRatio) {
  154.                    fMidEdgeRatio = t;
  155.                    invalid = 1;
  156.                 }
  157.              }
  158.              break;
  159.            case ID_SLOPE:
  160.              if(SHORT2FROMMP(mp1) == SLN_CHANGE ||
  161.                 SHORT2FROMMP(mp1) == SLN_SLIDERTRACK) {
  162.                 float t = (float) *psSlope;
  163.                 if(t != fSlope) {
  164.                    fSlope = t;
  165.                    invalid = 1;
  166.                 }
  167.              }
  168.              break;
  169.            case ID_MULT:
  170.            case ID_ADD:
  171.              i = (int) (ULONG) *prMultOrAdd;
  172.              if(i != iMultOrAdd) {
  173.                 iMultOrAdd = i;
  174.                 invalid = 1;
  175.              }
  176.              break;
  177.            case ID_NUMTAILS:
  178.              if(SHORT2FROMMP(mp1) == SPBN_CHANGE) {
  179.                i = *psNumTails;
  180.                if(i != iNumTails) {
  181.                   iNumTails = i;
  182.                   invalid = 1;
  183.                }
  184.              }
  185.              break;
  186.          }
  187.          break;
  188.      }
  189.      if(invalid) {
  190.        if(ok_to_post) WinPostMsg(hMain,UM_RECALC,0,0);
  191.        ok_to_post = 0;
  192.      }
  193.      return WinDefDlgProc(hwnd,msg,mp1,mp2);
  194.  }
  195.