游戏英雄榜对话框的实现
扫雷游戏英雄榜的实现,分为如下几步:(1)创建一个对话框资源,并添加相应的控件,如图15.6所示。
(点击查看大图)图15.6英雄榜对话框资源
(2)配置(setup.ini)文件格式如下:
[*]name=XXX
[*]time=0
(3)添加CHeroDlg类,其中需要包含IDD_HERO_DLG对话框资源和"设置可写记录标志"接口函数声明,用于外部函数调用时,设置是否对配置文件进行写操作。类的声明如代码15.4所示。
代码15.4CHeroDlg类的声明
01#if !defined(AFX_HERODLG_H__)[*]02#define AFX_HERODLG_H__
03[*]04// HeroDlg.h 头文件
05[*]06////////////////////////////////////////////
07// CHeroDlg dialog[*]08
09class CHeroDlg : public CDialog[*]10{
11public:[*]12 void SetWriteFlg(BOOL bflg);
//接口函数,设置可记录标志变量
13 CHeroDlg(CWnd* pParent = NULL); //构造函数[*]14
15 enum { IDD = IDD_HERO_LIST }; //对话框资源[*]16 int m_time; //保存时间变量
17 CString m_name; //保存姓名变量[*]18
19 public:[*]20 virtual int DoModal();//弹出对话框函数声明
21 protected:[*]22 virtual void DoDataExchange(CDataExchange* pDX);
23[*]24protected:
25[*]26 virtual void OnOK(); //单击"久仰"按钮响应函数声明
27[*]28 DECLARE_MESSAGE_MAP()
29private:[*]30 BOOL m_bWriteflg; //记录标志变量
31};[*]32
[*]33#endif
(4)CHeroDlg类的实现中通过调用系统API函数,来对配置文件进行读写操作。而"设置读写标志"接口函数,是对类的一个成员变量m_bWrite进行赋值操作,达到写入或者读取的区分。其代码如代码15.5所示。
代码15.5CHeroDlg类的实现
01// HeroDlg.cpp 源文件[*]02#include "stdafx.h
//插入头文件[*]03#include "mine.h"
04#include "HeroDlg.h[*] //插入类声明头文件
05[*]06///////////////////////////////////////////////
07// CHeroDlg 对话框[*]08
09CHeroDlg::CHeroDlg(CWnd* pParent /*=NULL*/)//构造函数[*]10 : CDialog(CHeroDlg::IDD, pParent)
11{[*]12 m_bWriteflg = FALSE; //初始化写标志变量为假
13}[*]14
15void CHeroDlg::DoDataExchange(CDataExchange* pDX)[*]16{
17 CDialog::DoDataExchange(pDX); //变量与资源映射[*]18 //{{AFX_DATA_MAP(CHeroDlg)
19 DDX_Text(pDX, IDC_TIME_EDIT, m_time);[*]20 DDX_Text(pDX, IDC_NAME_EDIT, m_name);
21 //}}AFX_DATA_MAP[*]22}
23[*]24BEGIN_MESSAGE_MAP(CHeroDlg, CDialog)
25 ON_BN_CLICKED(IDOK_BTN, OnBtn) //按钮与函数映射[*]26END_MESSAGE_MAP()
27[*]28////////////////////////////////////////////////////
29// CHeroDlg 消息句柄[*]30
31void CHeroDlg::SetWriteFlg(BOOL bflg) //设置写入标志[*]32{
33 m_bWriteflg = bflg;[*]34}
35[*]36int CHeroDlg::DoModal() //弹出对话框
37{[*]38 char pszTmp = {0};
39[*]40 //读取配置文件
41 GetPrivateProfileString("HERO", "name", "无名氏",[*]42 pszTmp, 127, ".\\hero.ini"); //读入姓名
43 m_name = CString(pszTmp);[*]44
45 if(!m_bWriteflg)[*]46 {
47 GetPrivateProfileString("HERO", "time", "0",[*]48pszTmp, 127, ".\\hero.ini");//读入等级
49 m_time = atoi(pszTmp);[*]50 }
51[*]52 return CDialog::DoModal();
53}[*]54
55void CHeroDlg::OnBtn() //按钮响应[*]56{
57 UpdateData(TRUE);[*]58 if(m_bWriteflg)
59 {[*]60 CString tmp;
61 //写入姓名和时间记录[*]62 WritePrivateProfileString("HERO", "name",
m_name, ".\\hero.ini");
63 tmp.Format("%d", m_time);[*]64 WritePrivateProfileString("HERO",
"time", tmp, ".\\hero.ini");
65 }[*]66 m_bWriteflg = FALSE;
68 CDialog::OnOK();[*]69}
70[*]71BOOL CHeroDlg::OnInitDialog() //初始化对话
72{[*]73 CDialog::OnInitDialog();
74[*]75 if(m_bWriteflg)
76 { //当为写入时,把按钮名称改变[*]77 SetDlgItemText(IDOK_BTN, "记录");
78 }[*]79
80 return TRUE;[*]81}
这个我要看看.....!
GAME798就是我的家!
页:
[1]