当前位置:首页 > Windows程序 > 正文

飞机大战笔记(单文档文件登陆界面)

2021-03-29 Windows程序

//////////////2015/07/21////////////////

/////////////by xbw///////////////////////

/////////////环境 VS 2013////////////

飞机大战做的差不多了,闲来无事加点高大上的东西,关于单文档的登陆界面;;;

技术分享

界面有点丑,但是足够账号登陆了,,先试一把;

技术分享

技术分享

还不错吧,该有的都有了;;

下面说一下过程 、、、、、、

首先,我们要在资源视图中创建一个Dialog对话框;;;

先大体画一下这个对话框,自己设计就好了,然后在空白处右键添加类,给这个对话框添加类;

这里呢,我添加了一个loading类,英语不是太好,胡乱写点高大上的英文;;;

在哪用对话框我们就需要吧#include "loading.h"加为他的头文件,,,

这样呢,我在view类中建了一个函数

BOOL CPlaneGameView::Indlg() { loading dlg; //opening = TRUE; if (dlg.DoModal() == IDOK) { Invalidate(); opening = dlg.open1; } return TRUE; }


调用在

void CPlaneGameView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: 在此添加专用代码和/或调用基类 //登陆界面 Indlg(); //初始化游戏 if (!opening) InitGame(); else exit(0); }


这个函数中会依次运行;

这样的话登陆界面就会先于单文档窗口显示,

至于opening是我设置的开关,就是点登陆界面的退出按钮时就会执行exit(0),整个程序就结束了,之前遇到的问题是,点了退出按钮后,程序反而运行了飞机大战主程序,哭笑不得,索性把这个按钮删掉了,玩家只能进入游戏才能退出,后来一想这不扯呢吗,哈哈,于是弄了起来;;

先来段loading.cpp的代码;

完整的******

// loading.cpp : 实现文件 // #include "stdafx.h" #include "PlaneGame.h" #include "loading.h" #include "afxdialogex.h" // loading 对话框 IMPLEMENT_DYNAMIC(loading, CDialogEx) loading::loading(CWnd* pParent /*=NULL*/) : CDialogEx(loading::IDD, pParent) , open(false) , open1(false) { } loading::~loading() { } void loading::DoDataExchange(CDataExchange* pDX) { } BEGIN_MESSAGE_MAP(loading, CDialogEx) ON_WM_NCHITTEST() ON_WM_CTLCOLOR() ON_BN_CLICKED(IDCANCEL, &loading::OnBnClickedCancel) ON_BN_CLICKED(IDOK, &loading::OnBnClickedOk) ON_BN_CLICKED(IDOK2, &loading::OnBnClickedOk2) END_MESSAGE_MAP() // loading 消息处理程序 //鼠标拖动窗口移动 LRESULT loading::OnNcHitTest(CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 ScreenToClient(&point); CRect rc; GetClientRect(&rc); if (rc.PtInRect(point)) { return HTCAPTION; } else { return CDialogEx::OnNcHitTest(point); } } HBRUSH loading::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { //HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); //CFont font; //font.CreatePointFont(200, _T("宋体"), NULL); //GetDlgItem(IDC_STATIC)->SetFont(&font); // TODO: 在此更改 DC 的任何特性 //在OnInitDialog()函数中添加: // TODO: 在此添加额外的初始化代 if (nCtlColor == CTLCOLOR_STATIC) { pDC->SetTextColor(RGB(200, 100, 50)); pDC->SetBkMode(RGB(200, 100, 50)); //设置背景透明 return HBRUSH(GetStockObject(HOLLOW_BRUSH)); } // TODO: 如果默认的不是所需画笔,则返回另一个画笔 //return hbr; return 0; } void loading::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 open = FALSE; CDialogEx::OnCancel(); } void loading::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CString name; CString pwd; int flog = 1; GetDlgItem(IDC_EDIT3)->GetWindowTextW(name); GetDlgItem(IDC_EDIT4)->GetWindowTextW(pwd); if (name.Compare(_T("xbw12138")) || pwd.Compare(_T("201401061130"))) { if (name.Compare(_T("xbw12138"))) { flog = 0; MessageBox(_T("用户名不正确"), _T("提示")); } if (pwd.Compare(_T("201401061130"))&&flog==1) MessageBox(_T("密码不正确"), _T("提示")); } else { OnOK(); } } void loading::OnBnClickedOk2() { open1 = FALSE; // TODO: 在此添加控件通知处理程序代码 }


 

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69482.html