// 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
没有合适的资源?快使用搜索试试~ 我知道了~
VC版中国象棋源码,面对有一定基础者
共71个文件
ico:20个
h:18个
cpp:17个
需积分: 0 12 下载量 170 浏览量
2008-12-14
16:12:49
上传
评论
收藏 390KB RAR 举报
温馨提示
学vc 喜欢象棋的朋友可以看看.好像网上还有本写 vc编象棋的书,我忘了放哪里了.找到后在传上来.
资源详情
资源评论
资源推荐
收起资源包目录
VC版中国象棋源码(智商比较高).rar (71个子文件)
Chess.ncb 257KB
StdAfx.h 1KB
Thinker.set 76B
hlinkctl.cpp 14KB
CoolButton.h 1KB
Chess.dsw 535B
Chess.dsp 7KB
sdsdsd.cpp 0B
res
BLACK_J.ico 766B
icon2.ico 766B
RED_S.ico 766B
dir.ico 1KB
RED_B.ico 766B
Chess.ico 1KB
RED_M.ico 766B
RED_K.ico 766B
cut.ico 766B
icon3.ico 766B
RED_X.ico 766B
BLACK_B.ico 766B
RED_J.ico 766B
Chess.rc2 397B
BLACK_K.ico 766B
RED_P.ico 766B
BLACK_X.ico 766B
BLACK_M.ico 766B
icon1.ico 766B
BLACK_P.ico 766B
BLACK_S.ico 766B
Thumbs.db 36KB
MapFace.cpp 751B
StepList.h 1KB
Thinker.h 1KB
StepList.cpp 2KB
Thinkdef.h 2KB
OptionDlg.h 1KB
Chess.cpp 2KB
MapFace.h 692B
CoolButton.cpp 6KB
ThinkOptionDlg.h 2KB
Thinker.cpp 25KB
Chess.opt 58KB
BaiDlg.cpp 10KB
hlinkctl.h 5KB
Debug
Thinker.set 76B
Setting.set 24B
Chess.exe 1.53MB
Chess.plg 991B
Setting.set 24B
Chess.clw 7KB
BaiDlg.h 2KB
resource.h 6KB
ChessDlg.cpp 27KB
MoveList.cpp 5KB
BaseDef.h 2KB
Chess.aps 47KB
MoveList.h 790B
OpenDlg.cpp 2KB
OpenDlg.h 1KB
ReportDlg.h 1KB
BaseClasses.h 2KB
ThinkOptionDlg.cpp 4KB
BaseClasses.cpp 6KB
Chess.rc 17KB
StdAfx.cpp 207B
Chess.h 1KB
ChessDlg.h 4KB
BaseDef.cpp 7KB
OptionDlg.cpp 2KB
chesshelp.html 136B
ReportDlg.cpp 1KB
共 71 条
- 1
WCSTZ0137
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0