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

来源:互联网 发布:手机上能注册淘宝店铺 编辑:程序博客网 时间:2024/06/05 05:59
创建一个工程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_X6#define DEFAULT_FRAME_Y44#define LINE_WIDTH_03#define LINE_WIDTH_12#define SIDE_WIDTH_06#define SIDE_WIDTH_15#define SHELL_S_H37#define SHELL_S_START_X9#define SHELL_S_START_Y9#define SHELL_L_START_X     9#define SHELL_L_START_Y52#define MINEAREA_FRAME_X12#define MINEAREA_FRAME_Y55#define MINE_WIDTH16#defineMINE_HEIGHT16#define MINE_AREA_LEFT12#define MINE_AREA_TOP55


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

原创粉丝点击