扫雷___建立工程和界面预估

创建一个工程Mine  由于扫雷只是简单的界面响应及绘制  不需要复杂的文档视图界面 因此需要对框架类进行化:
     1.删除MineDoc.h MineDoc.cpp  MainFrame.h MainFrame.cpp  MineView.h  MineView.cpp 6个文件
          删除方法 在FileView视图中删除这6个文件(Delete键)  然后在工程文件夹中删除这6个文件 即可
     2.创建扫雷主窗口 用于替代删除的CMainFrame类  可以在InitInstance中通过Win32方式定义注册并创建一个主窗口m_pMineWnd
     3.在m_pMineWnd窗口创建完成后 将m_pMineWnd赋给CWinApp的主窗口成员m_pMainWnd
     4.在CWinApp中删除关于CAboutDialog的定义
     5.将CWinApp中的默认消息映射删掉  因为此时默认主菜单响应以及CAboutDialog都已不存在

代码:
const CString classname = _T("MineClass");
BOOL CMineApp::InitInstance()
{
     m_pMineWnd = new CMineWnd();
     WNDCLASS wc;
     ZeroMemory(&wc, sizeof(WNDCLASS));

     wc.hInstance     = AfxGetInstanceHandle();
     wc.hbrBackground = NULL;
     wc.lpfnWndProc   = ::DefWindowProc;
     wc.hCursor       = LoadCursor(IDC_ARROW);
     wc.hIcon         = LoadIcon(IDR_MAINFRAME);
     wc.lpszClassName = classname;
     wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU);

     if(!AfxRegisterClass(&wc))
     {
          AfxMessageBox("注册窗口失败!");
          return FALSE;
     }

     UINT uWidth = DEFAULT_FRAME_X + m_xMineNum*MINE_WIDTH + LINE_WIDTH_0*3 +
          SIDE_WIDTH_0 + SIDE_WIDTH_1;

     UINT uHeight = DEFAULT_FRAME_Y + m_yMineNum*MINE_HEIGHT + LINE_WIDTH_0*3 +
          SIDE_WIDTH_0*2 + SIDE_WIDTH_1 + SHELL_S_H;

     UINT uxPos = GetSystemMetrics(SM_CXSCREEN)/2 - uWidth/2;

     UINT uyPos = GetSystemMetrics(SM_CYSCREEN)/2 - uHeight/2;

     if(!m_pMineWnd->CreateEx(NULL, classname, _T("扫雷"), WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
          uxPos, uyPos, uWidth, uHeight, NULL, NULL))
     {
          AfxMessageBox("创建主窗口失败!");
          return FALSE;
     }
    
     m_pMainWnd = m_pMineWnd;
     m_pMineWnd->ShowWindow(SW_SHOW);
     m_pMineWnd->UpdateWindow();

     return TRUE;
  }


     要做一个和window游戏扫雷一模一样的界面   就必须要了解Windows游戏扫雷的窗体组成  然后将各种边界值作成宏 方便在窗体随难度改变时作出对应大小改变
//以下宏用于定义窗体各部分边框的大小
#define DEFAULT_FRAME_X		6
#define DEFAULT_FRAME_Y		44

#define LINE_WIDTH_0		3
#define LINE_WIDTH_1		2

#define SIDE_WIDTH_0		6
#define SIDE_WIDTH_1		5

#define SHELL_S_H			37
#define SHELL_S_START_X		9
#define SHELL_S_START_Y		9
#define SHELL_L_START_X     9
#define SHELL_L_START_Y		52

#define MINEAREA_FRAME_X	12
#define MINEAREA_FRAME_Y	55

#define MINE_WIDTH			16
#define	MINE_HEIGHT			16
#define MINE_AREA_LEFT		12
#define MINE_AREA_TOP		55


    这里根据窗口大小定义了一系列的宏 这些宏主要是为了增加可读性 具体含义在下一节界面加载分析 
完整源代码下载地址点击这里
     http://download.csdn.net/detail/wudaijun/4709630

你可能感兴趣的:(扫雷___建立工程和界面预估)