#define EX 1
#define OH 2class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};class CMainWindow : public CWnd
{
protected:
static const CRect m_rcSquares[9];
int m_nGameGrid[9];
int m_nNextChar;
int GetRectID(CPoint point);
void DrawBoard(CDC * pDC);
void DrawX(CDC * pDC, int nPos);
void DrawO(CDC * pDC, int nPos);
void ResetGame();
void CheckForGameOver();
int IsWinner();
BOOL IsDraw();
public:
CMainWindow();
protected:
virtual void PostNcDestroy(); afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags,CPoint point); DECLARE_MESSAGE_MAP()
};#include<afxwin.h>
#include"TicTac.h"
CMyApp myApp;BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow);
m_pMainWnd->UpdateWindow ();
return TRUE;
}BEGIN_MESSAGE_MAP(CMainWindow,CWnd)
/* ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()*/
END_MESSAGE_MAP()const CRect CMainWindow::m_rcSquares [9]=
{
CRect(16,16,122,122),
CRect(128,16,224,112),
CRect(240,16,336,112),
CRect(16,128,112,224),
CRect(128,128,224,224),
CRect(240,128,336,224),
CRect(16,240,112,336),
CRect(128,240,224,336),
CRect(240,240,336,336),
};CMainWindow::CMainWindow ()
{
m_nNextChar = EX;
::ZeroMemory (m_nGameGrid,9 * sizeof(int) ); //
//Register a WNDCLASS.
//
CString strWndClass = AfxRegisterWndClass
(
CS_DBLCLKS,                                  //Class style
AfxGetApp()->LoadStandardCursor (IDC_ARROW), //class cursou
(HBRUSH) (COLOR_3DFACE + 1 ),                //background brush
AfxGetApp()->LoadStandardIcon (IDI_WINLOGO)  //class icon
); //
//Create a window
//
CreateEx(0,strWndClass,_T("Tic-Tac-Toe"),
WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL); //
//size the window
//
CRect rect(0,0,352,352);
CalcWindowRect(&rect); //有没有这句,没看出来效果不同
SetWindowPos(NULL,0,0,rect.Width (), rect.Height (), SWP_NOZORDER | SWP_NOMOVE | SWP_NOREDRAW);
}void CMainWindow::PostNcDestroy ()
{
delete this;
}CalcWindowRect 是什么作用。不要让我去看百度和MSDN了。昨天看了一天都没看懂。我来找个明白人问问