Windows
文章平均质量分 66
vanquishedzxl
这个作者很懒,什么都没留下…
展开
-
Win32 应用程序的开发本质--MSG
Win32应用程序永远脱离不了MicroSoft.也就意味着Windows 的消息机制永远是Win32应用的根本。 作为一个Windows 开发者对消息机制的理解深度决定了他的开发功底,一切事件因为消息而开始。 所以我今天最想提到的就是MSG。 MSG结构体 在Windows程序中,消息是由MSG结构体来表示的。MSG结构体的定义如下(参见MSDN)原创 2013-01-17 19:01:50 · 1434 阅读 · 0 评论 -
Cocos2D-x游戏开发之五:CCControlPotentiometer and CCControlSlider
今天继续Cocos2D-x的基础CCControlPotentiometer and CCControlSlider,到目前为至我想大家已经很了解学习的基本方法了,所以直接上代码吧:bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init());原创 2014-03-17 23:24:28 · 1275 阅读 · 0 评论 -
Cocos2D-x游戏开发之十一:在游戏背景上添加精灵
有了游戏背景的无限滚动之后我们应该在背景上添加些什么东西了,毕竟这个将来是一个游戏需要让用户动起来,而不是让大家傻傻的看着一个无限循环背景,这样会遭到同行的批斗的。 今天我们接着上一张在背景上添加些精灵。 首先我们先添加上一个小妹妹妹吧,我们绘制一个玩家类,首先在整个游戏中我们的游戏主角和障碍物都继承自一个实体类,所以我们先看一下这个实体类吧:有了实体类接下来我们就可以原创 2014-03-27 20:32:17 · 1668 阅读 · 0 评论 -
Cocos2D-x游戏开发之二十四:自定义字符串分割类
今天我们为下一节的CSV文件处理做一个准备,开始自定义一个对字符串按照特定的符号分割的类,实现如下:class StringUtil : public CCObject {public: static StringUtil* sharedStrUtil(); bool init(); /** 用分隔符分割字符串,结果存放到一个列表中,列表中的对象为CCString原创 2014-04-13 21:25:54 · 4902 阅读 · 0 评论 -
Cocos2D-x游戏开发之十五:CCTMXTiledMap地图的基础实例
今天学习了Cocos2D-x的地图基础知识,了解了游戏中地图是个怎么回事,从这一节开始我重新写一个例子。开门见山,地图编辑器我们利用开源软件:tiled-0.9.1-win32-setup.exe,可以在网上直接下载,编辑地图的方法很简单,大家在网上随便可以找到,在这里我只是记录一下我的code里面比较关键的一些地方:所以我们见直接上代码吧(我们用地图编辑器生成的地图文件叫做level01原创 2014-03-31 23:10:53 · 1647 阅读 · 0 评论 -
Cocos2D-x游戏开发之十四:粒子系统
今天补一补昨天晚上落下的Cocos2D-x非常重要的一节-------->粒子系统;作为一个初学者我只是利用了例子里面的几个基本类,组合出了如下图所示的一副场景:代码如下:CCParticleSystem* m_emitter = CCParticleExplosion::create(); m_emitter->retain(); this->addC原创 2014-03-31 23:01:53 · 1086 阅读 · 0 评论 -
Cocos2D-x游戏开发之十六:创建会运动的精灵
今天我们试着让我们的精灵动起来,当然我们知道所谓的动就是让精灵在多副图之间切换,所以我们开始之前先准备15张精灵运动图片,然后用工具将这些图片打包。所以当我们准备好这一切之后就可以开始编码了。void Player::run(){CCSpriteFrameCache * freamCache = CCSpriteFrameCache::sharedSpriteFrameCache();f原创 2014-04-01 22:10:56 · 2220 阅读 · 0 评论 -
Cocos2D-x游戏开发之十七:角色类的总结
学了这么久了现在还是有点模糊,今天我们把我只之前学习的知识开始做一个简单到 总结:首先我们先认识一下我们的游戏主角:在开发中我们往往不是把主角设置为一个精灵,因为精灵还有其他属性,所以我们的主角由一个成员变量叫做CCsprite:同事通常因为给个主角都是有共同点的,所以我们就先抽象出来一个角色实体:class Entity : public CCNode,public ControlL原创 2014-04-01 22:25:21 · 2799 阅读 · 0 评论 -
Cocos2D-x游戏开发之十八:背景随着角色而滚动
今天我们学习一下让我们的背景随着任务的移动不断地滚动。#include "entity.h"class Player : public Entity{public: Player(void); ~Player(void);public: CREATE_FUNC(Player); virtual bool init(); void run(); virtual bool Se原创 2014-04-02 21:24:34 · 1659 阅读 · 0 评论 -
Cocos2D-x游戏开发之十九:瓦块地图之碰撞检测
昨天我们有了精灵和背景,并且精灵可以跑动了,但是我们不能让精灵无穷无尽地跑下去吧,于是今天我们要在地图上添加一些障碍物了;首先打开精灵的TMX地图,然后我们自定义一个32X32像素的图片添加到图层中,然后设置此图层的属性为:“collidable” 值为“true”,下一步在地图中新建一个图层起名为“meta”现在发挥你的创造性把这些小东西添加此图层中保存即可。接下来就该在code中做一些原创 2014-04-04 23:30:43 · 3811 阅读 · 0 评论 -
Cocos2D-x游戏开发之二十:添加可以吃的精灵
现在我们在地图上的“Meta”上添加“star”瓦块,然后在代码中添加如下如下:bool Player::SetPlayerPosition(int x,int y){ CCSize spritesize = m_sprite->getContentSize(); CCPoint dspoint = CCPoint(x+spritesize.width/2,y); CCPoint t原创 2014-04-06 22:35:52 · 1426 阅读 · 0 评论 -
Cocos2D-x游戏开发之八:事件连续执行:CCMoveBy CCCallFunc CCSequence
接下来让我们继续基础知识的最后一节,将各种事件按照先后顺序连接起来是一件非常重要的事情,这一节我们做一个简单的Demo。我先执行移动Action然后在移动完成之后再告诉你们我已经到家了。。任然比较简单,代码如下:bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(原创 2014-03-21 22:20:34 · 1952 阅读 · 0 评论 -
Cocos2D-x游戏开发之九:屏幕触摸一:基本屏幕操作响应
今天我接着学习屏幕操作的响应事件。Cocos2D-x的屏幕触摸主要有四个函数如下所示: virtual void ccTouchesBegan(CCSet *pset,CCEvent *event);virtual void ccTouchesMoved(CCSet *pset,CCEvent *event);virtual void ccTouchesEnded(CCSet *p原创 2014-03-21 22:51:50 · 1798 阅读 · 0 评论 -
Cocos2D-x游戏开发之七:CCMoveBy CCJumpBy CCRotateBy CCAction CCRepeatForever
现在我们接着学习Cocos2D-x 的基础用法。CCMoveBy CCJumpBy CCRotateBy CCAction CCRepeatForever直接代码如下:bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init原创 2014-03-21 21:34:18 · 1399 阅读 · 0 评论 -
Cocos2D-x游戏开发之十:背景无限滚动
今天研究了一下Coco2D-x的背景无限滚动,其实是学习别人的demo,不过自己最终还是折腾出来了,其实还是比较简单了,就是背景不停地移动然后两张图片交替的贴上去。其精髓之处就是不断地更新背景然后在每一帧里调整两张背景的\X锚点,然后就会给人一种主角再向前奔跑的感觉。核心代码如下:bool TollgateScene::init(){bool bRet = false;do原创 2014-03-25 21:41:10 · 8261 阅读 · 1 评论 -
Cocos2D-x游戏开发之二十一:ScheduleUpdate 和ScheduleOne的用法
今天接着学习了Coco2D-x的定时器,Cocos2D为我们封装好了定时器功能,我们只需要再用到的地方直接使用: schedule可以直接使用,即采用默认方式在init()函数里面调用:this->scheduleupdate();并重新定义Update()即可。 也可以调动this-.>schedule(schedule_selector(HelloWorld::MYUpd原创 2014-04-09 21:30:01 · 8179 阅读 · 0 评论 -
Cocos2D-x游戏开发之二十二:CCNotificationCenter观察者模式基础(1)
Cocos2D-X为我们准备了太多东西,当我们想要监听一个动作但是都不能老是盯在这一件事情上的时候就可以用他为我们量身定制的观察者模式,今天我们初步来学习一下这个传说很久的观察这模式在Cocos2D-X中的简单运用。其实观察者模式的初步学习还是很简单的我们只要定义两个函数即可:class HelloWorld : public cocos2d::CCLayer{public:原创 2014-04-13 20:33:25 · 5232 阅读 · 0 评论 -
Cocos2D-x游戏开发之二十三:CCNotificationCenter观察者模式(2)-不同层之间事件的发送和接受
刚才我们 学习了基本的CCNotificationCenter观察者模式在一个层之中监听事件,现在我们再进一步学习如何在不同层之间监听吧,这一节的知识点我们在HelloWorld中发送一个事件消息在OtherLayer中接受并且处理消息。其实很简单只是一个函数换了个位置而已,直接上代码吧:class HelloWorld : public cocos2d::CCLayer{public:原创 2014-04-13 20:59:07 · 3097 阅读 · 0 评论 -
Cocos2D-x游戏开发之十二:在游戏背景上添加障碍物
今天我们在我们的游戏场景中再添加一个很重要的角色,游戏障碍物。这一节的游戏障碍我们任然在上一节所说的实体类上继承:我们的障碍物类如下所示实现:class Monster : public Entry{public: Monster(void); ~Monster(void); CREATE_FUNC(Monster); virtual bool init();pub原创 2014-03-27 21:39:50 · 3058 阅读 · 0 评论 -
Cocos2D-x游戏开发之十三:自定义游戏闪烁提示类
现在我们运用我们已经学过的知识实现一个类来完成游戏中主角或者障碍物受到攻击时闪烁提示信息。没有就新的东西,所以菜鸟们都可以看懂的,另外我还要特意强调一下,小的方面游戏需要创新,游戏开发中的效果需要创新,创新不是多么的难,运用简单的知识就能创新就像我们的这个类。废话说多了,直接看代码吧:class FlowWord : public CCNode {public: static原创 2014-03-27 22:09:37 · 3353 阅读 · 1 评论 -
Windows XP 双启动安装Ubuntu
双启动就是保留现有的Windows操作系统的同时在计算机上安装一个Linux的发行版,在启动计算机的时候选择需要启动的操作系统,安装的方式比较多。这里我们介绍Grub4Dos的安装方式,先说说准备工作。1.Windows XP操作系统(Windows7系统设置不一样,后面专门叙述)。2.磁盘上有20G左右的没有分区的空间,或者有一个大于20G的空闲分区,这个空闲分区原创 2013-01-16 18:40:05 · 689 阅读 · 1 评论 -
自己动手:VC 操作PowerPoint
前段时间突然接一小项目,其实也就是一个实例罢了,要求将程序中的位图按照一定的格式写入PowerPoint当中,经过自己的一番推敲终于搞定今天将具体的操作记录在此,方便今后改进。 环境及软件配置: (1)PowerPoint2003 (2)VC 6.0. 操作步骤: 首先新建一简单的MFC 对话框应用程序,在其中增加一按钮方便我们测试原创 2013-01-17 20:01:21 · 4732 阅读 · 2 评论 -
静态链接库
在windows的发展过程中在经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的原创 2013-01-18 21:30:57 · 613 阅读 · 1 评论 -
windows 开发中的句柄
和大多数开发Windows菜鸟程序员一样,对于句柄这个概念我曾一次次的试图去理解,然而大多数的结果就是很明确它是一种WINDOWS资源标识,代表一类资源只有API有能力访问和操作。然后就没有下文了,于是乎今天我又对句柄这个概念展开攻击。 句柄按照我自己的理解它确实是一个资源标识符,但是是一种特殊的资源,即内核对象。 所以要理解句柄就首先去知道内核对象是个什么东西,所谓内核对象在原创 2013-01-18 11:28:35 · 916 阅读 · 1 评论 -
动态链接库之二--规则MFC DLL
前面介绍了非规则MFC DLL,今天我们在总结一下第二类DLL--规则MFC DLL。 MFC规则DLL的概念体现在以下两方面: (1)它是MFC的 “是MFC”意味着可以在这种DLL内部使用MFC。 (2)它是规则的原创 2013-01-19 21:58:34 · 470 阅读 · 0 评论 -
Windows中的Unicode和ANSI 函数
自Windows NT起,Windows的所有版本都完全用Unicode来构建。也就是说,所有核心函数(创建窗口、显示文本、进行字符串处理等等)都需要Unicode字符串。调用一个Windows函数时,如果向它传入一个ANSI字符串(由单字节字符组成的一个字符串),函数首先会把字符串转换为Unicode,再把结果传给操作系统。如果希望函数返回ANSI字符串,那么操作系统会先把Unicode字符串转原创 2013-01-20 14:35:13 · 1357 阅读 · 0 评论 -
谈谈C 运行库中的安全字符串函数
任何修改字符串的函数都存在一个安全隐患:如果目标字符串缓冲区不够大,无法包含所生成的字符串,就会破坏内存中的数据(或者说发生“内存恶化”,即memory corruption)。下面是一个例子: // The following puts 4 characters in a // 3-character buffer, resulting in memory cor原创 2013-01-20 14:46:27 · 775 阅读 · 0 评论 -
内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,原创 2013-01-20 15:07:50 · 377 阅读 · 0 评论 -
Windows 错误处理机制
在开发当中难免会出现函数调用失败,一般情况下我们肯定很急切的想知道是什么致使函数调用失败,作为初级程序员的我们一般为了判断自己的函数调用失败的原因都会选择使用很多的if-else函数来实现,但是要是函数当中会有很多执行失败那么if-else会使我们的函数很杂乱。为了解决这种问题Microsoft提供了错误处理机制。 在一个函数调用完之后我们可以运用两个函数: Ge原创 2013-01-18 19:04:02 · 2987 阅读 · 1 评论 -
ANSI字符和Unicode字符与字符串数据类型
我们知道C语言用char数据类型来表示一个8位ANSI字符。默认情况下,在源代码中声明一个字符串时,C编译器会把字符串中的字符转换成8位char数据类型构成的一个数组。 Microsoft的C/C++编译器定义了一个内建的数据类型wchar_t,它表示一个16位的UnicodeUTF-16) 字符。因为早期版本的Microsoft编译器没有提供这个内建的数据类型,所以编译器原创 2013-01-20 14:20:12 · 639 阅读 · 0 评论 -
共享内核对象之--跨边界共享内核对象
了解内核对象创建的程序员都知道进程中的内核对象句柄一般是相对于进程的,也就是说它是进程内有效,虽然 内存对象句柄指向的是操作系统的一段内存但是我们通过理解每个进程的句柄表知道它们只是记录了句柄表的索引。所以当我们在一个进程中需要访问另外一个进程中的句柄是不能直接通过另一进程的句柄标识。虽然访问不一定失败但是访问的是完全不同资源。 查阅了资料我发现共享内存对象可以通过三种不同的机原创 2013-01-21 20:26:02 · 485 阅读 · 0 评论 -
C++ Vector(向量容器)
Vector 一个线性顺序结构的容器。相当于数组,但是其大小可以不预先指定,并且自动扩展,它可以像数组一样操作,但是由于它的特性我们可以将他看做动态数组, 在创建一个VECTOR 变量后他会自动在内存中分配一块连续的内存空间进行数据存储,初始大小可以预先指定也可以由vector默认指定,这个大小就是capacity()函数的返回值。当存储的数据超过分配的空间是vector会原创 2013-01-21 20:59:34 · 1333 阅读 · 1 评论 -
C/C++读书笔记之三:命名规则
比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。“匈牙利”法最大的缺点是烦琐,例如int i, j, k; float x, y, z;倘若采用“匈牙利”命名规则原创 2013-02-19 17:27:06 · 472 阅读 · 0 评论 -
When Not to Create a Thread-come from WINDOWS VIA C C++
So far, I've been singing the praises of multithreaded applications. Although there are a lot of great things about multithreaded applications, there are also some not-so-nice things. Some developers原创 2013-04-12 16:45:45 · 590 阅读 · 0 评论 -
Suspending and Resuming a Thread
Inside a thread kernel object is a value that indicates the thread's suspend count. When you callCreateProcess or CreateThread, the thread kernel object is created and the suspend count is initial原创 2013-04-28 13:11:59 · 855 阅读 · 0 评论 -
Writing Your First Thread Function
Every thread must have an entry-point function where it begins execution. We already discussed this entry-point function for your primary thread:_tmain or _tWinMain. If you want to create a second原创 2013-04-28 13:10:21 · 573 阅读 · 0 评论 -
http://blog.csdn.net/joshua_yu/article/details/631915
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进转载 2013-10-31 22:14:36 · 667 阅读 · 0 评论 -
Cocos2D-x游戏开发之二十五:自定义文本读取工具类
现在我们在上一节的基础上开始对文件进行解析,原创 2014-04-13 21:45:04 · 1631 阅读 · 0 评论