home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 3.ddi / CHESS.ZIP / EDIT.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  4.1 KB  |  127 lines

  1. // ObjectWindows - (C) Copyright 1992 by Borland International
  2.  
  3. #include <windows.h>
  4. #include <owl.h>
  5. #include "wcdefs.h"
  6. #include "edit.h"
  7. #include "externs.h"
  8.  
  9.  
  10. TEditBarWindow::TEditBarWindow(PTWindowsObject AParent, LPSTR ATitle) :
  11.     TWindow(AParent, ATitle)
  12. {
  13.     Attr.Style = WS_CHILD;
  14.     Attr.X = (3 * BORDERSIZE) + (MAXBDSIZE * SQUARE_SIZE) + (2 * MYFRAMESIZE);
  15.     Attr.Y = BORDERSIZE;
  16.    EditBarRect.right = Attr.W = (SQUARE_SIZE*2) + 6;
  17.    EditBarRect.bottom = Attr.H = (SQUARE_SIZE * 6) + 6;
  18.    EditBarRect.left = EditBarRect.top = 0;
  19.    SelectedItem = 0;
  20. }
  21.  
  22.  
  23. void TEditBarWindow::Paint(HDC hDC, PAINTSTRUCT&)
  24. {
  25.    int i;
  26.    BITMAP Bitmap;
  27.    HBITMAP hBitmap, hOldBmp, hMaskBmp;
  28.    HDC hMemoryDC = CreateCompatibleDC(hDC);
  29.  
  30.    DrawFrame(hDC, EditBarRect, TRUE);
  31.     
  32.    GetObject(PieceBmpArray[0][white], sizeof(BITMAP), (LPSTR)&Bitmap);
  33.  
  34.    for (i = 0; i < 6; i++)
  35.       {
  36.       hBitmap = PieceBmpArray[i][white];
  37.       hMaskBmp = MaskArray[i];
  38.       hOldBmp = (HBITMAP)SelectObject(hMemoryDC, hMaskBmp);      
  39.       BitBlt(hDC, 3, 3 + (SQUARE_SIZE * i), Bitmap.bmWidth, Bitmap.bmHeight,
  40.          hMemoryDC, 0, 0, SRCAND);
  41.       SelectObject(hMemoryDC, hBitmap);      
  42.       BitBlt(hDC, 3, 3 + (SQUARE_SIZE * i), Bitmap.bmWidth, Bitmap.bmHeight,
  43.          hMemoryDC, 0, 0, (SelectedItem == i)
  44.          ? NOTSRCERASE : SRCINVERT);
  45.       SelectObject(hMemoryDC, hOldBmp);
  46.       }
  47.  
  48.  
  49.    for (i = 0; i < 6; i++)
  50.       {
  51.       hBitmap = PieceBmpArray[i][black];
  52.       hMaskBmp = MaskArray[i];
  53.       hOldBmp = (HBITMAP)SelectObject(hMemoryDC, hMaskBmp);      
  54.       BitBlt(hDC, 3 + SQUARE_SIZE, 3 + (SQUARE_SIZE * i), Bitmap.bmWidth, Bitmap.bmHeight,
  55.          hMemoryDC, 0, 0, SRCAND);
  56.       SelectObject(hMemoryDC, hBitmap);      
  57.       BitBlt(hDC, 3+SQUARE_SIZE, 3 + (SQUARE_SIZE * i), Bitmap.bmWidth, Bitmap.bmHeight,
  58.          hMemoryDC, 0, 0, (SelectedItem == (i + 6))
  59.          ? NOTSRCERASE : SRCINVERT);
  60.       SelectObject(hMemoryDC, hOldBmp);
  61.       }
  62.    DeleteDC(hMemoryDC);
  63. }
  64.  
  65.  
  66. void TEditBarWindow::WMLButtonUp(TMessage&)
  67. {
  68.    POINT Point;
  69.    int i, j, temp;
  70.    RECT Rect;
  71.    BITMAP Bitmap;
  72.    HBITMAP hBitmap, hOldBmp, hMaskBmp;
  73.    HDC hDC = GetDC(HWindow);
  74.    HDC hMemoryDC = CreateCompatibleDC(hDC);
  75.  
  76.    int PreviousItem = SelectedItem;
  77.  
  78.    GetCursorPos( &Point );
  79.    ScreenToClient(HWindow, &Point);
  80.  
  81.    for (i = 0; i < 6; i++)
  82.       for (j = 0; j < 2; j++)
  83.          {
  84.             Rect.left = (j * SQUARE_SIZE) + 3;
  85.             Rect.right = Rect.left + SQUARE_SIZE;
  86.             Rect.top = (i * SQUARE_SIZE) + 3;
  87.             Rect.bottom = Rect.top + SQUARE_SIZE;
  88.             if (PtInRect(&Rect, Point))
  89.                SelectedItem = (i + ((j) ? 6 : 0));
  90.          }
  91.    if (SelectedItem == PreviousItem)
  92.       return;
  93.  
  94.  
  95.    GetObject(PieceBmpArray[0][white], sizeof(BITMAP), (LPSTR)&Bitmap);
  96.  
  97.    temp = PreviousItem % 6;
  98.  
  99.    hBitmap = PieceBmpArray[temp][(PreviousItem < 6) ? white : black];
  100.    hMaskBmp = MaskArray[temp];
  101.    hOldBmp = (HBITMAP)SelectObject(hMemoryDC, hMaskBmp);      
  102.    BitBlt(hDC, (PreviousItem < 6) ? 3 : 3 + SQUARE_SIZE,
  103.       3 + (SQUARE_SIZE * temp), Bitmap.bmWidth, Bitmap.bmHeight,
  104.       hMemoryDC, 0, 0, SRCERASE);
  105.    SelectObject(hMemoryDC, hBitmap);      
  106.    BitBlt(hDC, (PreviousItem < 6) ? 3 : 3 + SQUARE_SIZE,
  107.       3 + (SQUARE_SIZE * temp), Bitmap.bmWidth, Bitmap.bmHeight,
  108.       hMemoryDC, 0, 0, SRCINVERT);
  109.    SelectObject(hMemoryDC, hOldBmp);
  110.  
  111.    temp = SelectedItem % 6;
  112.  
  113.    hBitmap = PieceBmpArray[temp][(SelectedItem < 6) ? white : black];
  114.    hMaskBmp = MaskArray[temp];
  115.    hOldBmp = (HBITMAP)SelectObject(hMemoryDC, hMaskBmp);      
  116.    BitBlt(hDC, (SelectedItem < 6) ? 3 : 3 + SQUARE_SIZE,
  117.       3 + (SQUARE_SIZE * temp), Bitmap.bmWidth, Bitmap.bmHeight,
  118.       hMemoryDC, 0, 0, SRCAND);
  119.    SelectObject(hMemoryDC, hBitmap);      
  120.    BitBlt(hDC, (SelectedItem < 6) ? 3 : 3 + SQUARE_SIZE,
  121.       3 + (SQUARE_SIZE * temp), Bitmap.bmWidth, Bitmap.bmHeight,
  122.       hMemoryDC, 0, 0, NOTSRCERASE);
  123.    SelectObject(hMemoryDC, hOldBmp);
  124.    DeleteDC(hMemoryDC);
  125.    ReleaseDC(HWindow, hDC);
  126. }
  127.