//game.h
class CChess
{
private:
int clientWidth,clientHeight; //定義客戶區的高度和寬度
int numberRow,numberCol;//定義棋盤的行和列
RECT rect;//框架的位置資料定義 GDI RECT 而不是 MFC CRect
HWND m_hWnd;//用來識別各種不同資源的一個控制程式碼
HDC dc;
HPEN pen;
public:
CChess();
~CChess();
void ChessBoard();
};
//game.cpp
#include "stdafx.h"
#include "game.h"
CChess::CChess()
{
clientWidth=clientHeight=0;
numberRow=numberCol=0;
}
void CChess::ChessBoard()
{
int i;
m_hWnd=FindWindow(NULL,"chess");
dc=GetDC(m_hWnd);//獲取視窗的dc
pen=CreatePen(1,1,RGB(255,255,255));//建立畫筆
SelectObject(dc,pen);//建立關聯
GetClientRect(m_hWnd,&rect);//獲取客戶區的大小
clientWidth=rect.right-rect.left;
clientHeight=rect.bottom-rect.top;
numberRow=(clientWidth-100)/30; //1009
numberCol=(clientHeight-10)/30; //488
//int id,ih;獲取視窗區的大小
//RECT rectTest;
//GetWindowRect(m_hWnd,&rectTest);
//id=rectTest.right-rectTest.left;//1025
//ih=rectTest.bottom-rectTest.top;//526
//int isd,ish;獲取整個螢幕的尺寸
//isd=GetSystemMetrics(SM_CXSCREEN);//1366
//ish=GetSystemMetrics(SM_CYSCREEN);//768
//開始畫圖
for(i=1;i<=numberCol;i++) //15行
{
MoveToEx(dc,100,30*i,NULL);//移到線條的起點
LineTo(dc,clientWidth-98,30*i);
}
for(i=0;i<numberRow-2;i++)//28列
{
MoveToEx(dc,100+30*i,30,NULL);
LineTo(dc,100+30*i,clientHeight-37);
}
}
CChess::~CChess()
{
ReleaseDC(m_hWnd,dc);
}
昨天下午大致寫了一下,今天有花一個小時的時間進行了優化,畫布總於搞定。下面將進行如何獲取座標畫棋子。