// ChessDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Chess.h"
#include "ChessDlg.h"
#include "CoolButton.h"
#include "BaseDef.h"
#include "OptionDlg.h"
#include "ThinkOptionDlg.h"
#include "BaiDlg.h"
#include "OpenDlg.h"
#define CHESS_C_UNDO 0
#define CHESS_C_REDO 1
#define CHESS_C_HELP 2
#define CHESS_C_CUT 3
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CCoolButton m_btWeb;
CCoolButton m_btEmail;
CCoolButton m_btOK;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
afx_msg void OnButtonweb();
afx_msg void OnButtonemail();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
DDX_Control(pDX, IDC_BUTTONWEB, m_btWeb);
DDX_Control(pDX, IDC_BUTTONEMAIL, m_btEmail);
DDX_Control(pDX, IDOK, m_btOK);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
ON_BN_CLICKED(IDC_BUTTONWEB, OnButtonweb)
ON_BN_CLICKED(IDC_BUTTONEMAIL, OnButtonemail)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChessDlg dialog
CChessDlg::CChessDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChessDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CChessDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
CWinApp* pApp=AfxGetApp();
m_hIcon = pApp->LoadIcon(IDR_MAINFRAME);
m_hIconUndo = pApp->LoadIcon(IDI_UNDO);
m_hIconRedo = pApp->LoadIcon(IDI_REDO);
m_hIconHelp = pApp->LoadIcon(IDI_HELP);
m_hIconCut = pApp->LoadIcon(IDI_CUT );
//棋子图标
m_hIconMan[RED_K]=pApp->LoadIcon(IDI_R_K);
m_hIconMan[RED_S]=pApp->LoadIcon(IDI_R_S);
m_hIconMan[RED_X]=pApp->LoadIcon(IDI_R_X);
m_hIconMan[RED_M]=pApp->LoadIcon(IDI_R_M);
m_hIconMan[RED_J]=pApp->LoadIcon(IDI_R_J);
m_hIconMan[RED_P]=pApp->LoadIcon(IDI_R_P);
m_hIconMan[RED_B]=pApp->LoadIcon(IDI_R_B);
m_hIconMan[BLACK_K]=pApp->LoadIcon(IDI_B_K);
m_hIconMan[BLACK_S]=pApp->LoadIcon(IDI_B_S);
m_hIconMan[BLACK_X]=pApp->LoadIcon(IDI_B_X);
m_hIconMan[BLACK_M]=pApp->LoadIcon(IDI_B_M);
m_hIconMan[BLACK_J]=pApp->LoadIcon(IDI_B_J);
m_hIconMan[BLACK_P]=pApp->LoadIcon(IDI_B_P);
m_hIconMan[BLACK_B]=pApp->LoadIcon(IDI_B_B);
m_pdcBack=new CDC;
m_pdcBoard=new CDC;
m_bThinking=FALSE;
m_bCheck[0]=FALSE;
m_bCheck[1]=FALSE;
FixManMap();
}
void CChessDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChessDlg)
DDX_Control(pDX, IDC_CHESS_CUT, m_btCut);
DDX_Control(pDX, IDC_PROGRESS1, m_progressStep);
DDX_Control(pDX, IDC_STEPLIST, m_listStep);
DDX_Control(pDX, IDC_CHESS_UNDO, m_btUndo);
DDX_Control(pDX, IDC_CHESS_REDO, m_btRedo);
DDX_Control(pDX, IDC_CHESS_HELP, m_btHelp);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChessDlg, CDialog)
//{{AFX_MSG_MAP(CChessDlg)
ON_COMMAND(ID_ABOUTBOX, OnAboutbox)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_DESTROY()
ON_COMMAND(ID_FILE_BAI, OnFileBai)
ON_COMMAND(ID_FILE_NEW, OnFileNew)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_OPTION, OnFileOption)
ON_BN_CLICKED(IDC_CHESS_UNDO, OnEditUndo)
ON_BN_CLICKED(IDC_CHESS_REDO, OnEditRedo)
ON_BN_CLICKED(IDC_CHESS_HELP, OnEditHelp)
ON_COMMAND(ID_CHESS_CUT, OnEditCut)
ON_WM_TIMER()
ON_LBN_DBLCLK(IDC_STEPLIST, OnDblclkSteplist)
ON_COMMAND(ID_HELP_EMAIL, OnHelpEmail)
ON_COMMAND(ID_HELP_WEB, OnHelpWeb)
ON_COMMAND(ID_FILE_THINKOPTION, OnFileThinkOption)
ON_COMMAND(ID_CHESS_HELP, OnEditHelp)
ON_COMMAND(ID_CHESS_REDO, OnEditRedo)
ON_COMMAND(ID_CHESS_UNDO, OnEditUndo)
ON_BN_CLICKED(IDC_CHESS_CUT, OnEditCut)
ON_COMMAND(ID_HELP_USE, OnHelpUse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChessDlg message handlers
BOOL CChessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, FALSE);
SetIcon(m_hIcon, TRUE); // Set small icon
m_btUndo.SetIcon(m_hIconUndo,32,32);
m_btRedo.SetIcon(m_hIconRedo,32,32);
m_btHelp.SetIcon(m_hIconHelp,32,32);
m_btCut .SetIcon(m_hIconCut ,32,32);
CClientDC dc(this);
//Create Bitmap for DC
m_Bitmap1.CreateCompatibleBitmap(&dc,XBW,YBW);
m_Bitmap2.CreateCompatibleBitmap(&dc,XBW,YBW);
m_pdcBack->CreateCompatibleDC(&dc);
m_pdcBoard->CreateCompatibleDC(&dc);
m_pdcBoard->SelectObject(&m_Bitmap1);
m_pdcBack->SelectObject(&m_Bitmap2);
MakeBoard(); //draw Chessboard in Board DC(3D)
m_Setting.Load();
m_Thinker.SetLevel(m_Setting.m_nLevel);
m_Thinker.LoadThinkSetting();
m_progressStep.CProgressCtrl::SetRange(0,100);
m_nTimer=SetTimer(1,80,NULL);
New();
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CChessDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CClientDC dc(this);
CRect rc;
GetUpdateRect(&rc,TRUE);
rc.OffsetRect(-XOFFSET,-YOFFSET);
UpdateFace(rc);
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CChessDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CChessDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_nManPickUp!=32)
{
CPoint last=m_pointPickUp;
point.Offset(-XOFFSET-MW/2,-YOFFSET-MW/2);
if(point.x<SW)point.x=SW;
if(point.x>BWA*8+SW)point.x=BWA*8+SW;
if(point.y<SW)point.y=SW;
if(point.y>BWA*9+SW)point.y=BWA*9+SW;
m_pointPickUp=point;
CRect rc=MakeUpdateRect(last,m_pointPickUp);
UpdateFace(rc);
}
CDialog::OnMouseMove(nFlags, point);
}
void CChessDlg::OnAboutbox()
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
CChessDlg::~CChessDlg()
{
if(m_pdcBack)delete m_pdcBack;
if (m_pdcBoard)delete m_pdcBoard;
}
void CChessDlg::OnFileOption()
{
COptionDlg optiondlg;
optiondlg.m_CORM0=m_Setting.m_nCOrM[0];
optiondlg.m_CORM1=m_Setting.m_nCOrM[1];
optiondlg.m_nMode =m_Setting.m_nMode;
optiondlg.m_nLevel=m_Setting.m_nLevel;
m_bThinking=FALSE;
EnableCommand(CHESS_C_CUT,FALSE);
int respond=optiondlg.DoModal();
if(respond==IDOK)
{
m_Setting.m_nCOrM[0]=optiondlg.m_CORM0;
m_Setting.m_nCOrM[1]=optiondlg.m_CORM1;
m_Setting.m_nMode=optiondlg.m_nMode;
m_Setting.m_nLevel=optiondlg.m_nLevel;
m_Thinker.SetLevel(m_Setting.m_nLevel);
m_Setting.Save();
ShowStatus();
if(m_Setting.m_nCO
中国象棋源代码C++
5星 · 超过95%的资源 需积分: 50 187 浏览量
2008-09-26
14:03:35
上传
评论 2
收藏 74KB RAR 举报
howebest
- 粉丝: 1
- 资源: 3
最新资源
- AIS2024 valid
- 最入门的爬虫代码 python.docx
- 爬虫零基础入门-爬取天气预报.pdf
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈