📄 info.cpp
字号:
// ObjectWindows - (C) Copyright 1992 by Borland International
#include <owl.h>
#include <static.h>
#include "wcdefs.h"
#include "info.h"
#include "externs.h"
short LEFTMARGIN = 6;
short SEPERATOR = 4;
#define MAXLINE (INFOXSIZE - LEFTMARGIN -1)
#define COLORX (LEFTMARGIN + CHARSIZE * 6)
#define COLORY (SEPERATOR + MYFRAMESIZE)
#define COLORW (CHARSIZE * 6)
#define TIMERX (LEFTMARGIN + CHARSIZE * 6)
#define TIMERY (COLORY + LINESIZE + SEPERATOR)
#define TIMERW (MAXLINE - TIMERX)
#define WHITEINFOX (LEFTMARGIN + CHARSIZE * 7)
#define WHITEINFOY (TIMERY + LINESIZE + SEPERATOR * 2)
#define WHITEINFOW (MAXLINE - WHITEINFOX)
#define BLACKINFOX (WHITEINFOX)
#define BLACKINFOY (WHITEINFOY + LINESIZE + SEPERATOR)
#define BLACKINFOW (WHITEINFOW)
#define LEVELX (LEFTMARGIN + CHARSIZE * 7)
#define LEVELY (BLACKINFOY + LINESIZE + SEPERATOR)
#define LEVELW (MAXLINE - LEVELX)
#define VALUEX (LEFTMARGIN + CHARSIZE * 7)
#define VALUEY (LEVELY + LINESIZE + SEPERATOR * 2)
#define VALUEW (MAXLINE - VALUEX)
#define NODEX (LEFTMARGIN + CHARSIZE * 8)
#define NODEY (VALUEY + LINESIZE + SEPERATOR)
#define NODEW (MAXLINE - NODEX)
#define SECX (LEFTMARGIN + CHARSIZE * 7)
#define SECY (NODEY + LINESIZE + SEPERATOR)
#define SECW (MAXLINE - SECX)
#define DEPTHY (SECY + LINESIZE + SEPERATOR)
#define DEPTHX (LEFTMARGIN + CHARSIZE * 7)
#define DEPTHW (MAXLINE - DEPTHX)
#define STATBESTY (DEPTHY + LINESIZE + SEPERATOR * 2)
#define BESTX (LEFTMARGIN)
#define BESTY (STATBESTY + LINESIZE + 1)
#define BESTW (MAXLINE - LEFTMARGIN)
#define BESTH (LINESIZE * 3 + SEPERATOR * 3 - 9)
#define MESSX (LEFTMARGIN)
#define MESSY (BESTY + BESTH + SEPERATOR * 2)
#define MESSW (MAXLINE - MESSX)
#define EmptyStr ""
//--------------- TNoEraseBkGndStatic methods -------------------
void TNoEraseBkGndStatic::WMEraseBkGnd(RTMessage msg)
{
if (DoErase)
{
HDC hDC = HDC( msg.WParam );
RECT Rect;
HBRUSH hOldBrush;
hOldBrush = (HBRUSH)SelectObject(hDC, GetStockObject(LTGRAY_BRUSH));
GetClientRect(HWindow, &Rect);
PatBlt(hDC, Rect.left, Rect.top, Rect.right - Rect.left,
Rect.bottom - Rect.top, PATCOPY);
SelectObject(hDC, hOldBrush);
DoErase = FALSE;
msg.Result = 1;
}
else
msg.Result = 0;
}
//---------------- TInfoWindow Methods -------------------------
TInfoWindow::TInfoWindow(PTWindowsObject AParent, LPSTR ATitle) :
TWindow(AParent, ATitle)
{
short temp;
Attr.Style |= WS_CHILD | WS_VISIBLE;
Attr.X = (3 * BORDERSIZE) + (MAXBDSIZE * SQUARE_SIZE) + (2 * MYFRAMESIZE);
Attr.Y = BORDERSIZE;
LEFTMARGIN= MYFRAMESIZE + CHARSIZE/2;
SEPERATOR = LINESIZE/4;
INFOXSIZE = (28 * CHARSIZE) + (2 * LEFTMARGIN);
INFOYSIZE = MESSY + LINESIZE + SEPERATOR + MYFRAMESIZE;
temp = MAXBDSIZE * SQUARE_SIZE + (2 * MYFRAMESIZE);
INFOYSIZE = (temp > INFOYSIZE) ? temp : INFOYSIZE;
InfoRect.right = Attr.W = INFOXSIZE;
InfoRect.bottom = Attr.H = INFOYSIZE;
InfoRect.left = InfoRect.top = 0;
new TStatic(this, -1, " Turn:", LEFTMARGIN, COLORY,
CHARSIZE * 6, LINESIZE, 5);
new TStatic(this, -1, " White:", LEFTMARGIN, WHITEINFOY,
CHARSIZE * 7, LINESIZE, 4);
new TStatic(this, -1, " Black:", LEFTMARGIN, BLACKINFOY,
CHARSIZE * 7, LINESIZE, 6);
new TStatic(this, -1, " Time:", LEFTMARGIN, TIMERY,
CHARSIZE * 6, LINESIZE, 5);
new TStatic(this, -1, " Level:", LEFTMARGIN, LEVELY,
CHARSIZE * 13, LINESIZE, 12);
new TStatic(this, -1, " Value:", LEFTMARGIN, VALUEY,
CHARSIZE * 7, LINESIZE, 6);
new TStatic(this, -1, " Nodes:", LEFTMARGIN, NODEY,
CHARSIZE * 8, LINESIZE, 7);
new TStatic(this, -1, " N/Sec:", LEFTMARGIN, SECY,
CHARSIZE * 9, LINESIZE, 9);
new TStatic(this, -1, " Depth:", LEFTMARGIN, DEPTHY,
CHARSIZE * 7, LINESIZE, 6);
new TStatic(this, -1, " Bestline:", LEFTMARGIN-2, STATBESTY,
MAXLINE - 2, LINESIZE, 9);
Color = new TStatic(this, -1, EmptyStr, COLORX, COLORY,
COLORW, LINESIZE, 6);
WhiteInfo = new TStatic(this, -1, EmptyStr, WHITEINFOX, WHITEINFOY,
WHITEINFOW, LINESIZE, WHITEINFOW/CHARSIZE);
BlackInfo = new TStatic(this, -1, EmptyStr, BLACKINFOX, BLACKINFOY,
BLACKINFOW, LINESIZE, BLACKINFOW / CHARSIZE);
Timer = new TNoEraseBkGndStatic(this, -1, EmptyStr, TIMERX, TIMERY,
TIMERW, LINESIZE, TIMERW /CHARSIZE);
Level = new TStatic(this, -1, EmptyStr, LEVELX, LEVELY,
LEVELW, LINESIZE, LEVELW / CHARSIZE);
Value = new TStatic(this, -1, EmptyStr, VALUEX, VALUEY,
VALUEW, LINESIZE, VALUEW / CHARSIZE);
Nodes = new TStatic(this, -1, EmptyStr, NODEX, NODEY,
NODEW, LINESIZE, NODEW / CHARSIZE);
Seconds = new TStatic(this, -1, EmptyStr, SECX, SECY,
SECW, LINESIZE, SECW / CHARSIZE);
Depth = new TNoEraseBkGndStatic(this, -1, EmptyStr, DEPTHX, DEPTHY,
DEPTHW, LINESIZE, DEPTHW /CHARSIZE);
BestLine = new TStatic(this, -1, EmptyStr, BESTX, BESTY,
BESTW, BESTH, ((BESTW / CHARSIZE) * 3));
Message = new TStatic(this, -1, EmptyStr, MESSX, MESSY,
MESSW, LINESIZE, MESSW / CHARSIZE);
}
void TInfoWindow::Paint( HDC PaintDC, PAINTSTRUCT& )
{
DrawInfoFrame(PaintDC);
DrawStaticFrames(PaintDC);
}
void TInfoWindow::DrawInfoFrame(HDC hDC)
{
DrawFrame(hDC, InfoRect);
}
void TInfoWindow::WMControlColor(TMessage& Msg)
{
SetBkColor( HDC(Msg.WParam), RGB(192, 192, 192));
Msg.Result = (long)GetStockObject(LTGRAY_BRUSH);
}
void TInfoWindow::Reset()
{
Color->SetText("White");
WhiteInfo->Clear();
BlackInfo->Clear();
Level->Clear();
Value->Clear();
Nodes->Clear();
Seconds->Clear();
BestLine->Clear();
Message->Clear();
}
void TInfoWindow::IterReset()
{
Color->SetText("White");
Value->Clear();
Nodes->Clear();
Seconds->Clear();
BestLine->Clear();
}
void TInfoWindow::DrawSFrame(HDC hDC, RECT *rect)
{
int x1, x2, y1, y2;
HPEN hPen, hOldPen;
HBRUSH hOldBrush;
POINT pArray[3];
x1 = rect->left;
x2 = rect->right;
y1 = rect->top;
y2 = rect->bottom;
hOldBrush = (HBRUSH)SelectObject(hDC, GetStockObject(LTGRAY_BRUSH));
PatBlt(hDC, x1, y1, x2 - x1, y2 - y1, PATCOPY);
SelectObject(hDC, hOldBrush);
hPen = CreatePen(PS_SOLID, 1, RGB(128, 128, 128));
hOldPen = (HPEN)SelectObject(hDC, hPen);
pArray[1].x = pArray[0].x = x1;
pArray[0].y = y2;
pArray[2].y = pArray[1].y = y1;
pArray[2].x = x2;
Polyline(hDC, pArray, 3);
DeleteObject(SelectObject(hDC, GetStockObject(WHITE_PEN)));
pArray[1].x = x2;
pArray[1].y = y2;
pArray[2].y = y1 - 1;
Polyline(hDC, pArray, 3);
SelectObject(hDC, hOldPen);
}
void TInfoWindow::DrawStaticFrames(HDC hDC)
{
RECT rect;
rect.left = LEFTMARGIN - 1;
rect.right = MAXLINE + 1;
rect.top = COLORY - 1;
rect.bottom = COLORY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = WHITEINFOY - 1;
rect.bottom = WHITEINFOY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = BLACKINFOY - 1;
rect.bottom = BLACKINFOY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = TIMERY - 1;
rect.bottom = TIMERY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = LEVELY - 1;
rect.bottom = LEVELY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = VALUEY - 1;
rect.bottom = VALUEY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = NODEY - 1;
rect.bottom = NODEY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = SECY - 1;
rect.bottom = SECY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = DEPTHY - 1;
rect.bottom = DEPTHY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
rect.top = BESTY - 1;
rect.bottom = BESTY + BESTH + 1;
DrawSFrame(hDC, &rect);
rect.top = MESSY - 1;
rect.bottom = MESSY + LINESIZE + 1;
DrawSFrame(hDC, &rect);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -