扫雷源码(转)

MFC源代码:

// DlgCustom.cpp : implementation file
//

#include "stdafx.h"
#include "mine.h"
#include "DlgCustom.h"
#include "MineWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgCustom dialog


CDlgCustom::CDlgCustom(CWnd* pParent /*=NULL*/)
    : CDialog(CDlgCustom::IDD, pParent)
{
    //{{AFX_DATA_INIT(CDlgCustom)
    m_uyNum = 0;
    m_uxNum = 0;
    m_uMineNum = 0;
    //}}AFX_DATA_INIT
}


void CDlgCustom::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDlgCustom)
    DDX_Text(pDX, IDC_EDIT1, m_uyNum);
    DDV_MinMaxUInt(pDX, m_uyNum, 8, 100);
    DDX_Text(pDX, IDC_EDIT2, m_uxNum);
    DDV_MinMaxUInt(pDX, m_uxNum, 8, 100);
    DDX_Text(pDX, IDC_EDIT3, m_uMineNum);
    DDV_MinMaxUInt(pDX, m_uMineNum, 1, 1000);
    //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgCustom, CDialog)
    //{{AFX_MSG_MAP(CDlgCustom)
    ON_BN_CLICKED(IDC_OK, OnOk)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgCustom message handlers

void CDlgCustom::OnOk() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if (m_uMineNum > m_uxNum*m_uyNum)
    {
        MessageBox("神坑", "-.-", MB_OK);
        return;
    }
    CMineWnd* pMineWnd = (CMineWnd*)AfxGetMainWnd();
    pMineWnd->SetDataFromCustom(m_uxNum, m_uyNum, m_uMineNum);
    CDialog::OnOK();
}

void CDlgCustom::InitialData(UINT uxNum, UINT uyNum, UINT uMineNum)
{
    m_uxNum = uxNum;
    m_uyNum = uyNum;
    m_uMineNum = uMineNum;
}

// DlgNewRec.cpp : implementation file
//

#include "stdafx.h"
#include "mine.h"
#include "DlgNewRec.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgNewRec dialog


CDlgNewRec::CDlgNewRec(CWnd* pParent /*=NULL*/)
    : CDialog(CDlgNewRec::IDD, pParent)
{
    //{{AFX_DATA_INIT(CDlgNewRec)
    m_strCamp = _T("");
    m_strHolder = _T("");
    m_strLevel = _T("");
    //}}AFX_DATA_INIT
}


void CDlgNewRec::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDlgNewRec)
    DDX_Text(pDX, IDC_EDIT_CAMP, m_strCamp);
    DDX_Text(pDX, IDC_EDIT_HOLDER, m_strHolder);
    DDX_Text(pDX, IDC_LEVEL, m_strLevel);
    //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgNewRec, CDialog)
    //{{AFX_MSG_MAP(CDlgNewRec)
        // NOTE: the ClassWizard will add message map macros here
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgNewRec message handlers

void CDlgNewRec::SetLevel(UINT uLevel)
{
    switch(uLevel)
    {
    case LEVEL_PRIMARY:
        m_strLevel = "初级记录:";
        break;
    case LEVEL_SECONDARY:
        m_strLevel = "中级记录:";
        break;
    case LEVEL_ADVANCE:
        m_strLevel = "高级记录:";
        break;
    default:
        break;
    }
}

CString CDlgNewRec::GetRecCamp()
{
    return m_strCamp;
}

CString CDlgNewRec::GetRecHolder()
{
    return m_strHolder;
}

// DlgRank.cpp : implementation file
//

#include "stdafx.h"
#include "mine.h"
#include "DlgRank.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgRank dialog


CDlgRank::CDlgRank(CWnd* pParent /*=NULL*/)
    : CDialog(CDlgRank::IDD, pParent)
{
    //{{AFX_DATA_INIT(CDlgRank)
    m_strAdvCamp = _T("");
    m_strAdvHolder = _T("");
    m_strPriCamp = _T("");
    m_strPriHolder = _T("");
    m_strAdvScore = _T("");
    m_strPriScore = _T("");
    m_strSecScore = _T("");
    m_strSecCamp = _T("");
    m_strSecHolder = _T("");
    //}}AFX_DATA_INIT
}


void CDlgRank::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDlgRank)
    DDX_Text(pDX, IDC_ADV_CAMP, m_strAdvCamp);
    DDX_Text(pDX, IDC_ADV_HOLDER, m_strAdvHolder);
    DDX_Text(pDX, IDC_PRI_CAMP, m_strPriCamp);
    DDX_Text(pDX, IDC_PRI_HOLDER, m_strPriHolder);
    DDX_Text(pDX, IDC_ADV_BEST, m_strAdvScore);
    DDX_Text(pDX, IDC_PRI_BEST, m_strPriScore);
    DDX_Text(pDX, IDC_SEC_BEST, m_strSecScore);
    DDX_Text(pDX, IDC_SEC_CAMP, m_strSecCamp);
    DDX_Text(pDX, IDC_SEC_HOLDER, m_strSecHolder);
    //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgRank, CDialog)
    //{{AFX_MSG_MAP(CDlgRank)
        // NOTE: the ClassWizard will add message map macros here
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgRank message handlers



void CDlgRank::SetPriRecord(CString camp, CString holder, UINT score)
{
    m_strPriCamp = camp;
    m_strPriHolder = holder;
    m_strPriScore.Format("%d%s", score, "秒");
}

void CDlgRank::SetSecRecord(CString camp, CString holder, UINT score)
{
    m_strSecCamp = camp;
    m_strSecHolder = holder;
    m_strSecScore.Format("%d%s", score, "秒");
}

void CDlgRank::SetAdvRecord(CString camp, CString holder, UINT score)
{
    m_strAdvCamp = camp;
    m_strAdvHolder = holder;
    m_strAdvScore.Format("%d%s", score, "秒");
}

// Mine.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "Mine.h"

#include "MineWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMineApp

BEGIN_MESSAGE_MAP(CMineApp, CWinApp)
    //{{AFX_MSG_MAP(CMineApp)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMineApp construction

CMineApp::CMineApp()
{

    // TODO: add construction code here,
    // Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CMineApp object

CMineApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CMineApp initialization

const CString classname = _T("MineClass");
BOOL CMineApp::InitInstance()
{
    //读取保存的设置
    char exeFullPath[MAX_PATH];
    GetModuleFileName(NULL, exeFullPath, MAX_PATH);
    CString strPath(exeFullPath);
    CString configPath =strPath.Left(strPath.ReverseFind('\\'));
    configPath += "\\config.ini";

    m_xMineNum = GetPrivateProfileInt("MINE", "XNUM", 9, configPath);
    m_yMineNum = GetPrivateProfileInt("MINE", "YNUM", 9, configPath);

    m_pMineWnd = new CMineWnd();
    WNDCLASS wc;
    ZeroMemory(&wc, sizeof(WNDCLASS));

    wc.hInstance     = AfxGetInstanceHandle();
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    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;
    
}




主程序:

// Mine.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "Mine.h"

#include "MineWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMineApp

BEGIN_MESSAGE_MAP(CMineApp, CWinApp)
    //{{AFX_MSG_MAP(CMineApp)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMineApp construction

CMineApp::CMineApp()
{

    // TODO: add construction code here,
    // Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CMineApp object

CMineApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CMineApp initialization

const CString classname = _T("MineClass");
BOOL CMineApp::InitInstance()
{
    //读取保存的设置
    char exeFullPath[MAX_PATH];
    GetModuleFileName(NULL, exeFullPath, MAX_PATH);
    CString strPath(exeFullPath);
    CString configPath =strPath.Left(strPath.ReverseFind('\\'));
    configPath += "\\config.ini";

    m_xMineNum = GetPrivateProfileInt("MINE", "XNUM", 9, configPath);
    m_yMineNum = GetPrivateProfileInt("MINE", "YNUM", 9, configPath);

    m_pMineWnd = new CMineWnd();
    WNDCLASS wc;
    ZeroMemory(&wc, sizeof(WNDCLASS));

    wc.hInstance     = AfxGetInstanceHandle();
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    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;
    
}




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容