// 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
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
中国象棋.zip (69个子文件)
中国象棋
StepList.h 1KB
MoveList.h 790B
BaiDlg.cpp 10KB
Chess.opt 51KB
MapFace.h 692B
CoolButton.cpp 6KB
Chess.clw 7KB
ThinkOptionDlg.h 2KB
res
icon2.ico 766B
RED_P.ico 766B
BLACK_P.ico 766B
cut.ico 766B
BLACK_B.ico 766B
icon1.ico 766B
RED_M.ico 766B
icon3.ico 766B
RED_X.ico 766B
RED_J.ico 766B
dir.ico 1KB
Chess.ico 1KB
RED_B.ico 766B
BLACK_K.ico 766B
RED_K.ico 766B
BLACK_S.ico 766B
BLACK_M.ico 766B
BLACK_X.ico 766B
Chess.rc2 397B
BLACK_J.ico 766B
RED_S.ico 766B
MapFace.cpp 751B
ChessDlg.cpp 27KB
Chess.rc 17KB
BaseClasses.h 2KB
ChessDlg.h 4KB
ReportDlg.h 1KB
CoolButton.h 1KB
Chess.plg 991B
BaseClasses.cpp 6KB
sdsdsd.cpp 0B
Thinkdef.h 2KB
hlinkctl.h 5KB
Setting.set 24B
Thinker.set 76B
StdAfx.cpp 207B
Chess.cpp 2KB
resource.h 6KB
Thinker.h 1KB
OptionDlg.cpp 2KB
StdAfx.h 1KB
Chess.aps 47KB
ReportDlg.cpp 1KB
StepList.cpp 2KB
BaseDef.h 2KB
hlinkctl.cpp 14KB
OpenDlg.h 1KB
OptionDlg.h 1KB
Debug
Setting.set 24B
Thinker.set 76B
Chess.exe 1.53MB
OpenDlg.cpp 2KB
MoveList.cpp 5KB
Chess.ncb 305KB
BaiDlg.h 2KB
Chess.dsw 535B
Chess.h 1KB
BaseDef.cpp 7KB
ThinkOptionDlg.cpp 4KB
Chess.dsp 7KB
Thinker.cpp 25KB
共 69 条
- 1
资源评论
huohuosld
- 粉丝: 2
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功