MATLAB飞机大战第二版,windows程序设计——飞机大战札记(单文档文件登陆界面)...

windows程序设计——飞机大战笔记(单文档文件登陆界面)

//2015/07/21

/by xbw///

/环境 VS 2013

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

064658487.png

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

064658488.png

064658489.png

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

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

首先,我们要在资源视图中创建一个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: 在此添加控件通知处理程序代码

}

LRESULT loading::OnNcHitTest(CPoint point)这个是添加的消息,具体什么消息不再这说明了,请看我的其他文章,鼠标拖动对话框移动的那篇,对,就是这个功能;

HBRUSH loading::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)也是添加的消息,为了使static text等一些空间透明,在有背景图的时候效果很明显,不过这里装逼失败了,一会文章补上;;;;;

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();

}

}

这段是重点了吧算是,检查登陆是否正确,,,虽然是个单机,不过这样也很高大上,后续呢,我将要用xml记录一些数据,试试能不能实现一个账号记录一个分数,弄个排行榜什么的,等我昂;

void loading::OnBnClickedOk2()

{

open1 = FALSE;

// TODO:  在此添加控件通知处理程序代码

}

这就是退出按钮的开关,,,,至于一些变量,都添加在相应的头文件里吧,一定要记得初始化,要不会乱套的,,,

这样就基本差不多了,不正确的地方互相交流学习,有问题在下边留言,我会回复跟您一同解决问题的,

这样就车不多了

,不多说了

版权声明:本文为博主原创文章,未经博主允许不得转载。1楼zhoujielunzhimi昨天 17:20居然看到了exit(0);nexit一般用在console程序中,n界面程序使用PostQuitMessage(0).Re: xbw12138昨天 19:04回复zhoujielunzhimin学习了,谢谢您,我会改进的Re: xbw12138昨天 19:05回复zhoujielunzhimin学习了,谢谢您,我会改进的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吸收Mockito的流利度

我最近发现自己编写了一些代码来集成两个不同的平台。 这些系统之一是基于Java的系统,而另一个虽然不是用Java编写的,却提供了Java API。 我将这些系统分别称为Foo和Bar。 在编写一行代码之前就很明显了,但是,测试最终的适配器将…

软件工程第三次作业

题目要求 最大连续子数组和(最大子段和) 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]a[i1]…a[j]的子段和的最大值。 当所给的整数均为负数时定义子段和为0,依此定义&a…

使用HTML5 IndexDB存储图像和文件

使用IndexedDB存储图像和文件 有一天,我们写了关于如何在localStorage中保存图像和文件的文章,它是关于我们今天可用的实用主义。 然而,localStorage有一些性能影响 - 我们将在稍后的博客中讨论这个问题 - 并且未来期望的方法是使用IndexedD…

Gitlab 项目上传

一,登陆gitab,新建reject Repository name: 仓库名称 Description(可选): 仓库描述介绍 Public, Private : 仓库权限(公开共享,私有或指定合作者) Initialize this repository with a README: 添加一个README.md gitig…

stm32f103r6最小系统原理图_超强PCB布线设计经验谈附原理图

在当今激烈竞争的电池供电市场中,由于成本指标限制,设计人员常常使用双面板。尽管多层板(4层、6层及8层)方案在尺寸、噪声和性能方面具有明显 优势,成本压力却促使工程师们重新考虑其布线策略,采用双面板。在本文中,我…

[UE4GamePlay架构(九)GameInstance(转)

GameInstance这个类可以跨关卡存在,它不会因为切换关卡或者切换游戏模式而被销毁。然而,GameMode和PlayController就会再切换关卡或者游戏模式时被引擎销毁重置,这样他们里面的状态就不能被保存。比如,你想再下一个关卡中知道上一…

灵格斯怎么屏幕取词_电脑包尺寸怎么选?手提的好还是双肩的好?比较推荐哪款电脑包?...

在携带笔记本电脑的时候,一般都会用到电脑包,那么电脑包的尺寸该怎么选呢?为了能更好的装下电脑,电脑包的尺寸必须要比笔记本电脑的尺寸大一些,而不能刚刚好。笔记本的尺寸参数一般是指屏幕尺寸,而整个机身…

JSBridge实战

前言 H5 VS Native 一直是前端技术界争执不下的话题。react、vue等技术栈引领着纯H5开发,rn、week则倡导原生体验。但在项目实战中,经常会选择一个中立的方案:混合开发。大众称呼:Hybrid。 本人目前从事新闻类产品研发&#xff…

单元测试Java Hadoop作业

在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业。 当然并没有完成,因为它缺少单元测试部分。 在本文中,我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单元测试&#xff…

vue2.0中的:is和is的区别

此文首发于 https://lijing0906.github.io/ 最近,工作之余在翻阅vue.js的官方文档,在查看到动态组件和解析 DOM 模板时的注意事项的时候,讲到一个特殊的is特性,觉得很有意思,就来写一篇自己理解的总结。 现场 写栗子…

mysql复制模式第二部分-----双主模式

双主配置 我在配置主从服务器时,使用了两台服务器:10.19.34.126和10.19.34.91。 1、首先需要在这两台上搭建单独的mysql服务masterA和masterB。 2、配置数据库masterA,要对每一个数据库服务配置唯一标示,参数名为server-id&#x…

pde中微元分析法的主要思想_初中数学常用的思想方法丨所有题型的考试技巧最全整理,高分必备...

【导语】初中数学虽然是基础数学,但是这并不意味着就没有难度,特别是在素质教育下,从培养学生综合素质能力的角度出发,初中数学越来越重视数学思维的培养,因此在很多数学问题的设置上,都进行了相当难度的调…

解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]...

一、控制台打印的程序运行时的log4j日志中包含中文乱码 在IDEA安装目录的bin目录下找到名为"idea.exe.vmoptions"的文件: 使用文本编译软件(Notepad等)打开此文件,在文件内容从末尾追加一行设置(-Dfile.encodingUTF-8)&…

php识别地址,实现地址自动识别实例(PHP)

具体问题具体分析!代码实现基于laravel完成。一个laravel完整的功能得具备这些:路由route,Model, View, Controller, 我这里用的有依赖注入服务容器等功能,当然,用到地址,你首先要有地址库。。。下面来看看…

kubernetes cpu限制参数说明

docker CPU限制参数 Option Description --cpus<value> Specify how much of the available CPU resources a container can use. For instance, if the host machine has two CPUs and you set --cpus"1.5", the container is guaranteed at most one and …

Java 8备忘单中的可选

Java 8 java.util.Optional<T>是scala.Option[T]和Data.Maybe在Haskell中的较差表亲。 但这并不意味着它没有用。 如果您不熟悉此概念&#xff0c;请将Optional想象为可能包含或不包含某些值的容器。 就像Java中的所有引用都可以指向某个对象或为null &#xff0c; Optio…

让 Chrome 崩溃的一行 CSS 代码

一般的 CSS 代码只会出现 UI 版式或者兼容性方面的小问题。但这里我们要分享一行有趣的 CSS&#xff0c;它可以直接让你的 Chrome 页面挂掉 :) 复现 在 Chrome 里打开一个稍复杂的页面&#xff0c;比如知乎或者掘金打开开发者工具&#xff0c;为页面 <body> 增加样式 s…

用Vue Node从零开始实现拼多多前后端商城项目 — 记录踩坑之旅(上篇)

前言 本人移动端开发妹子工程师一枚 &#xff0c;因为公司项目需要用到前端的技术(主要是vue)&#xff0c;自己自学了一段时间&#xff0c;最近花了半个月在工作之余的时间终于自己完完整整写下来一整个前后端商城项目(当然是跟了一个线上项目直播班&#xff0c;不要嘲笑我)&am…

系统重装助手教你如何在Microsoft Edge中恢复“关闭所有选项卡”警告

在Microsoft Edge中&#xff0c;当您打开多个选项卡时&#xff0c;浏览器将显示“您要关闭所有选项卡吗&#xff1f;” 警告&#xff0c;以防止您意外关闭重要标签。 通常&#xff0c;在没有第二个想法的情况下&#xff0c;您会立即禁用此功能&#xff0c;检查提示中的“始终关…

受JAAS保护的JAX-RS端点

随着RESTFUL&#xff08;JAX-RS&#xff09;作为创建Web服务端点的“首选”方式的问世&#xff0c;很长一段时间以来&#xff0c;我一直想知道人们如何围绕它实现安全机制。 归根结底&#xff0c;我假设JAX-RS的基础实现是servlet&#xff0c;因此其安全性也可能围绕容器&…