home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 February / VPR9702A.ISO / FFILLY / NVM61028 / NMBTN.TFY < prev    next >
Text File  |  1996-10-27  |  3KB  |  133 lines

  1. // NmBtn.tfy - Button operations
  2.  
  3. #define USERMES_BUTTONDOWN    1
  4.  
  5. #define BUTTON_W    22
  6. #define BUTTON_H    28
  7.  
  8. int nButtons;
  9. int picButtonD[];
  10. int picButtonB[];
  11. int nButtonX[];
  12. int nButtonY[];
  13. int nButtonW[];
  14. int nButtonH;
  15. int picOriginalButtonD;
  16. int picOriginalButtonB;
  17. int nBrightButton;
  18. int wavButton;
  19.  
  20. InitializeButton()
  21. {
  22.     int i;
  23.     //picOriginalButtonD = LoadPic("ButtonD.bmp");
  24.     //picOriginalButtonB = LoadPic("ButtonB.bmp");
  25.     picOriginalButtonD = CreatePic(picDummy, BUTTON_W, BUTTON_H);
  26.     MovePic(picDummy, 0, 0, BUTTON_W, BUTTON_H, picOriginalButtonD);
  27.     picOriginalButtonB = CreatePic(picDummy, BUTTON_W, BUTTON_H);
  28.     MovePic(picDummy, BUTTON_W, 0, BUTTON_W, BUTTON_H, picOriginalButtonB);
  29.     nButtonH = PicHeight(picOriginalButtonD);
  30.     nBrightButton = -1;
  31.     wavButton = LoadRsc("Button.wav");
  32.     mes (MOUSEMOVE) {
  33.         i = GetCurButton(MesP2, MesP3);
  34.         if (i >= 0) {
  35.             if (nBrightButton != i) {
  36.                 if (nBrightButton >= 0) {
  37.                     ShowButton(nBrightButton);
  38.                 }
  39.                 ShowBrightButton(i);
  40.                 nBrightButton = i;
  41.             }
  42.         } else {
  43.             if (nBrightButton >= 0) {
  44.                 ShowButton(nBrightButton);
  45.             }
  46.             nBrightButton = -1;
  47.         }
  48.     }
  49.     mes(LBDOWN) {
  50.         if (nBrightButton >= 0) {
  51.             PlayRsc(wavButton);
  52.             PostMes(USER, USERMES_BUTTONDOWN, nBrightButton);
  53.         }
  54.     }
  55. }
  56.  
  57. int MakeButton(str caption, int sx, int x, int y, int w)
  58. {
  59.     int i;
  60.     i = nButtons;
  61.     picButtonD[i] = CreateButtonPic(picOriginalButtonD, caption, sx, x, y, w);
  62.     picButtonB[i] = CreateButtonPic(picOriginalButtonB, caption, sx, x, y, w);
  63.     nButtonX[i] = x;
  64.     nButtonY[i] = y;
  65.     nButtonW[i] = w;
  66.     ShowButton(i);
  67.     nButtons = nButtons + 1;
  68.     nBrightButton = -1;
  69.     return i;
  70. }
  71.  
  72. DeleteAllButtons()
  73. {
  74.     int i;
  75.     for (i = 0; i < nButtons; i = i + 1) {
  76.         DelPic(picButtonD[i]);
  77.         DelPic(picButtonB[i]);
  78.     }
  79.     DelArrayAll(picButtonD[]);
  80.     DelArrayAll(picButtonB[]);
  81.     DelArrayAll(nButtonX[]);
  82.     DelArrayAll(nButtonY[]);
  83.     DelArrayAll(nButtonW[]);
  84.     nButtons = 0;
  85. }
  86.  
  87. int CreateButtonPic(int opic, str caption, int sx, int x, int y, int w)
  88. {
  89.     int pic, pw, ph, pmw, i, p;
  90.     pw = PicWidth(opic);
  91.     ph = PicHeight(opic);
  92.     pic = CreatePic(opic, w, ph);
  93.     MovePic(opic, 0, 0, pw - 5, ph, pic);
  94.     pmw = pw - 10;
  95.     p = (w - pw - 1) / pmw + 1;
  96.     for (i = 0; i < p; i = i + 1) {
  97.         MovePic(opic, 5, 0, pmw, ph, pic, i * pmw + pw - 5, 0);
  98.     }
  99.     MovePic(opic, pw - 5, 0, 5, ph, pic, w - 5, 0);
  100.     SetFont(16,"MS Sans Serif",0,0,0,0,400,0);
  101.     TextColor(255, 255, 255);
  102.     TextWrite(caption, pic, sx, 5);
  103.     return pic;
  104. }
  105.  
  106. ShowButton(int i)
  107. {
  108.     MovePic(picButtonD[i], 0, 0, nButtonW[i], nButtonH,
  109.         picMainWnd, nButtonX[i], nButtonY[i], 0, 0);
  110. }
  111.  
  112. ShowBrightButton(int i)
  113. {
  114.     MovePic(picButtonB[i], 0, 0, nButtonW[i], nButtonH,
  115.         picMainWnd, nButtonX[i], nButtonY[i], 0, 0);
  116. }
  117.  
  118. int GetCurButton(int x, int y)
  119. {
  120.     int i;
  121.     for (i = 0; i < nButtons; i = i + 1) {
  122.         if (nButtonY[i] <= y && y < nButtonY[i] + nButtonH) {
  123.             if (nButtonX[i] <= x && x < nButtonX[i] + nButtonW[i]) {
  124.                 break;
  125.             }
  126.         }
  127.     }
  128.     if (i >= nButtons)
  129.         i = -1;
  130.     return i;
  131. }
  132.  
  133.