随笔分类 -  C++

摘要:这里面的好多函数不能死记硬背,知道有这个函数就行,等用到了,再回来细看一、窗口管理函数包括以下几类:按钮函数(Button)Microsoft提供了对话框和控制来支持应用程序与用户之间的交互通讯。按钮就是一种控制,用户可通过点击按钮来向应用程序提供输入信息。插入标记函数(Caret)一个插入标记是位于窗口绘图区中的一个闪动的直线、方块或图标。插入标记通常用于指示文本或图形将插入的位置。Win32应用程序可以使用插入标记函数来创建一个插入标记,改变它的闪动频率,显示、隐藏插入标记,或重新设置插入标记的位置。 CreateCaret(),DestoryCaret(),HideCaret(),Se. 阅读全文
posted @ 2013-10-21 17:39 struggle_time 阅读(865) 评论(0) 推荐(0) 编辑
摘要:以上一节为基础,废话不多说。 首先新增一个节点,用于比较显示//新增一个节点 ent = mSceneMgr->createEntity("Quad"); ent->setMaterialName("MyMaterial9"); node = mSceneMgr->getRootSceneNode()->createChildSceneNode("Node2",Ogre::Vector3(15,0,0)); node->attachObject(ent); 我们改变下纹理坐标显示的比例为 0.2 manu 阅读全文
posted @ 2013-10-17 15:21 struggle_time 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:这一节以基础16为基础,练习材质的使用。 第一,看看框架 1 //material 2 3 #include "ExampleApplication.h" 4 5 class TutorialApplication : public ExampleApplication 6 { 7 protected: 8 public: 9 TutorialApplication()10 {11 }12 13 ~TutorialApplication() 14 {15 }16 protected:17 void createScene(void)... 阅读全文
posted @ 2013-10-16 15:38 struggle_time 阅读(1130) 评论(0) 推荐(1) 编辑
摘要:今天引用外来库时出现问题,也许是版本问题。错误如下:.....\oursun\cincludes\quickdraw.h(309): error C2011: “Picture”:“struct”类型重定义1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\comdef.h(326) : 参见“Picture”的声明其中Picture声明如下:__if_not_exists(Picture){ struct Picture : IPictureDisp {};}struct定义如下:struct Pict.. 阅读全文
posted @ 2013-10-14 17:50 struggle_time 阅读(3911) 评论(0) 推荐(0) 编辑
摘要:这个问题很奇怪啊,不明白什么原因? 打开VS2010,打开项目,运行,就提示”无法启动此程序,因为计算机中丢失OgreMain_d.dll。尝试重新安装该程序以解决此问题。“ 然后就去配置环境变量,包含库文件,再运行,还是不行。 然后去Google ,发现大神们厉害,找到问题所在了,是打开方式不对。可又不明白什么原因。 正确的打开方式是: 直接打开项目文件夹,双击*.sln文件就没有问题了。 向大牛们致敬。 阅读全文
posted @ 2013-10-11 10:41 struggle_time 阅读(2065) 评论(0) 推荐(0) 编辑
摘要:敲代码时,突然发现有一个背景图片无法显示,百思不得其解,最终发现是MoveWindow() SetWindowPos()这两个函数的使用不当造成的。 这里把这两个函数的前世今生给分析一下。 先看MoveWindow()函数,用于改变窗口的位置和尺寸,对于顶层窗口,按照屏幕对齐与左上角,对于子窗口,则对齐与父窗口的左上角。BOOL MoveWindow( HWND hWnd,int x, int y, int nWidth, int nHeight,BOOL bRepaint = TRUE);// 第一个表示窗口句柄; 参数x,y表示窗口的左上角起点; 参数nwidth,nHeig... 阅读全文
posted @ 2013-10-09 12:58 struggle_time 阅读(10825) 评论(1) 推荐(1) 编辑
摘要:这本书绝对经典,看看定会增加不少知识。当然这本书有很多东西比《Windows程序设计第五版》中的更加详细。1、Unicode:宽字节字符集 这是一个国际的字符标准,16位,最大可支持65000个字符,完全可以应付全球所有语言。在Windows实际使用中,可以使用Micrsoft公司的API,也可以定义两个宏(UNICODE AND _UNICODE),就可以修改然后重新编译源文件。在实际使用中如果可以最好使用Unicode字符替代ANSI字符。2、C运行库对Unicode的支持 对于一些常用的数据类型和函数,Unicode都有与之对应。 如数据类型wchar_t, 定义为type... 阅读全文
posted @ 2013-10-07 23:08 struggle_time 阅读(942) 评论(1) 推荐(0) 编辑
摘要:重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。这是通过重载类的operator()来实现的。 函数对象更重要的作用是实现函数回调,可以替代指针实现函数回调。定义如下:struct int_max{ int operator()(int x,int y) { return x>y?x:y; }}; 调用时生成一个对象: int_max int_max1; ... 阅读全文
posted @ 2013-09-28 10:38 struggle_time 阅读(692) 评论(0) 推荐(0) 编辑
摘要:STL中算可以分为三种, 1、变序型队列算法,可以改变容器内的数据; 2、非变序型队列算法,处理容器内的数据而不改变他们 ; 3、通用数值算法,这涉及到很多专业领域的算术操作,这里不做介绍。 第一是变序型算法,这种算法可以改变容器内的数据,而且可以只对容器的一部分数据进行操作。常用的有copy,reverse,swap,replace等,用法如下: 首先看看copy函数,是将某一范围的数据拷贝到新的容器中_OutIt copy(_InIt _First, _InIt _Last,_OutIt _Dest); // copy [_First, _Last) to [_Dest... 阅读全文
posted @ 2013-09-27 17:54 struggle_time 阅读(847) 评论(0) 推荐(0) 编辑
摘要:栈stack 、队列queue 和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现。 stack 先进后出 queue 先进先出 priority_queue 按优先级出队 代码示例如下: 1 #include "iostream" 2 using namespace std; 3 #include "string" 4 #include "stack" 5 #include "queue" 6 7 i 阅读全文
posted @ 2013-09-26 17:58 struggle_time 阅读(379) 评论(0) 推荐(0) 编辑
摘要:Maps是一种关联式容器,包含“关键字/值”对。Multimaps和maps很相似,但是MultiMaps允许重复的元素。 简单介绍:1、声明,首先包含头文件 “map” map test1,test2;// map ::iterator it1,it2;//迭代器 multimap test3; multimap ::iterator it3;2、插入数据,可使用三种方法: 第一种,使用pair函数 test1.insert(pair(1,"song")); test1.insert(pair(2,"zhang")); test1.insert... 阅读全文
posted @ 2013-09-26 17:29 struggle_time 阅读(362) 评论(0) 推荐(0) 编辑
摘要:集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象,其用法与set基本相同。 用法介绍 1.insert()函数 首先把头文件set包含进去#include "set" set test1; set ::iterator it1; multiset test2; multiset ::iterator it2; ////////////////////////////////////////////////////////////////////////// //输入 it... 阅读全文
posted @ 2013-09-26 14:55 struggle_time 阅读(393) 评论(0) 推荐(0) 编辑
摘要:cegui配置整了好长时间了,在一位大牛帮助下终于搞定了,网上的教程大多是老版本的,cegui-0.8.2版的配置寥寥无几,现在总结一下,献给正在纠结的小白们。 准备工作 第一步,先下载cegui-0.8.2和CEGUI 0.8.x Dependency http://www.cegui.org.u 阅读全文
posted @ 2013-09-24 14:13 struggle_time 阅读(4620) 评论(5) 推荐(3) 编辑
摘要:建立自己的Ogre程序一直以来都是使用ExampleApplication.h来写程序,现在来看看它到底有什么神奇的地方。 首先,我们新建一个win32空项目 然后配置环境 最后新建define.cpp、define.h、main.cpp具体过程如下第一,在define.h中包含头文件,这里需要Orge.h文件,然后添加如下代码#include "Ogre.h"class MyApplication{public:MyApplication();~MyApplication();void go();protected:bool setup();//设置环境void setu 阅读全文
posted @ 2013-09-23 17:22 struggle_time 阅读(2532) 评论(1) 推荐(3) 编辑
摘要:这一节练习一下手动创建实体,用到了对象(ManualObject) 第一,依然是模板#include "ExampleApplication.h"class Example1 : public ExampleApplication{public: void createScene() { }protected:private:};#include INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ){ Example1 app; app.go(); ret... 阅读全文
posted @ 2013-09-22 15:31 struggle_time 阅读(1689) 评论(0) 推荐(1) 编辑
摘要:BSP(binary-space partitioning) Scene Manager(二叉空间分割)场景管理器比较适合用于室内场景。第一,添加框架代码如下 1 #include "ExampleApplication.h" 2 class Example1 : public ExampleApplication 3 { 4 public: 5 void createScene() 6 { 7 } 8 protected: 9 private:10 };11 12 #include 13 INT WINAPI WinMain( HINSTANCE hInst... 阅读全文
posted @ 2013-09-22 12:52 struggle_time 阅读(1277) 评论(0) 推荐(0) 编辑
摘要:今天按照网上的教程配置CEGUI, 一直运行不了,不明白原因,而后又出现了错误LNK1104: 无法打开文件“OgreGUIRenderer_d.lib”,经过反复检查,排除包含目录问题。 不过可能是教程有点老,我在CEGUI的lib文件夹下发现根本没有这个文件,倒是有个类似的文件CEGUIOgreRenderer_d.lib。原来不同的版本,生成的文件也不同,真是害苦了我们初学者啊总结如下: 首先添加包含目录 .......\include\CEGUI 然后添加 .......\Samples\Common\CEGUIRenderer\include 最后添加.......\S... 阅读全文
posted @ 2013-09-18 10:25 struggle_time 阅读(446) 评论(0) 推荐(0) 编辑
摘要:前几天设置天空盒时一直出问题,现在问题终于解决了,问题来的莫名其妙,走的也莫名其妙。 第一,还是框架,我们依然使用ExampleApplication文件,框架如下 1 #include "ExampleApplication.h" 2 3 class TutorialApplication : public ExampleApplication 4 { 5 protected: 6 public: 7 TutorialApplication() 8 { 9 }10 11 ~TutorialApplication() 12 {13 }14 p... 阅读全文
posted @ 2013-09-17 13:07 struggle_time 阅读(2143) 评论(0) 推荐(0) 编辑
摘要:以上一节为蓝本,这里增加一点难度,添加了四个节点,增加键盘控制移动速度,使用bool变量控制是否移动。 第一,要增加键盘控制,那就使用OIS::KeyListener,在监听器里添加一个父类KeyListener,添加成员变量并初始化 其中构造函数的ExampleFrameListener(win,cam,true,false);第三个参数改为true,表示使用带缓冲的键盘输入。 1 MoveDemoListener(RenderWindow *win,Camera *cam,SceneNode *sn,Entity *ent,std::deque &walk) 2 ... 阅读全文
posted @ 2013-09-13 17:47 struggle_time 阅读(993) 评论(1) 推荐(1) 编辑
摘要:学了那么长时间,才学会跑起来。My Ogre,动起来。 第一,还是要把框架搭起来,这里我们用到双端队列deque,前面已经简单介绍过,头文件如下:#include "ExampleApplication.h"#include "deque"using namespace std; 第二,是我们的监听器,继承至ExampleFrameListener,构造函数我们使用五个参数,分别为渲染窗口,摄像机,场景节点,实体,行走路线上的位置坐标。1 MoveDemoListener(RenderWindow *win,Camera *cam,SceneNode * 阅读全文
posted @ 2013-09-12 18:08 struggle_time 阅读(1903) 评论(0) 推荐(1) 编辑