- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 Python与c++的相互调用(一)
最近公司项目使用python,个人突然对游戏引擎中python与c++之间的交互产生了兴趣。正赶上朋友要我帮忙做个五行相生相克的演示程序,于是想到写个hge的python导出库,顺便熟悉下python的c api。特写下此文,记录python与C++相互调用的要点,以便日后查阅。准备工作 首先是配置开发环境了,可以选择编译python源代码,或者直接使用python的安装包。
2012-06-02 13:25:24
1658
原创 CTreeCtrl控件添加排序功能
由于项目需要,要使用MFC。记录下平时遇到的问题。 需求是在CTreeCtrl添加按类型,名字排序功能。其中类型是编辑器内部定义的。 我的做法是通过鼠标右键单击,弹出一个菜单。菜单提供两个选项:按类型、按名字排序。 这里遇到2个知识点:1. 如何弹出菜单。2. 如何排序 1. 弹出菜单: 由于需要提供其他的特殊功能,我子类化了CT
2011-12-19 19:28:37
1516
原创 分割文件路径函数 _splitpath()和生成文件路径函数_makepath()
当获得某个文件的完整路径,想要得到其驱动、文件名、扩展名时。不必用字符串查找“.”、“/”或者“:”。使用_splitpath函数就可以轻松的解决问题。 const char* fileName= "C:\Program Files\MS DirectX
2011-08-28 14:46:28
1844
原创 QT实现资源管理器总结
项目中需要实现的资源管理器做完了,使用的是QT,实现TreeView与ListView数据统一显示文件。现在总结一下开发过程中遇到的一些问题以及我的解决方法。1. TreeView与ListView显示文件 Qt的QTreeWidget和QListWidget接
2011-08-27 22:39:13
12398
原创 QDockWidget上自定义 Widget 随其自动缩放
场景编辑器需要将场景中的物体作为列表显示。QT中使用QDockWidget做是很漂亮的。 我一开始的做法是,写个类继承QWidget,将QTreeWidget作为成员。然后添加QDockWidgetm_dockwidget = new QDockWidg
2011-08-17 16:19:06
5684
1
原创 API函数CoInitialize(转)
Coinitialize CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象。应用程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。 返回值S_OK : 该线程中COM库初始化成功S_FALSE 该线程中COM库已经被初始化 CoInitialize () 标明以单线程方式创建。 使用 CoInitialize 创建可以使对象直接与线程连接,得到最高的性能。 CoInitialize
2010-09-29 01:58:00
1871
原创 sscanf 用法(转)
int sscanf(const char*, const char*,…):从一个字符串中读取与制定格式相符的数据。这个函数包换在头文件#include中。 它与scanf类似,都是用于输入。只是sscanf是以字符串参数为输入源,而scanf是以键盘输入为输入源。 第一个参数是输入源,第二个参数代表格式。 格式参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '/t' | '/n' | 非%符号} 注
2010-09-19 01:56:00
634
原创 使用win api 读写 ini配置文件
游戏或者其他应用程序需要很多配置信息,比如:窗口的长宽,是否全屏显示。所以每一个游戏都支持配置文件的读取以及写入。 而ini文件因为其结构简单易懂,而被广泛应用。记得在实习培训的时候,python作业要求自己实现读取ini文件。python对字符串的操作很强大,当时就考虑在自己的C++程序中加入这个功能。今天在看代码的过程中惊喜的发现了两个api函数,GetPrivateProfileString和 WritePrivateProfileString分别用于读/写 ini文件。 1.读
2010-09-17 08:07:00
2054
原创 把游戏作为一个状态机
半年是实习结束了,无论是求职还是实习过程真是一波三折啊。 感慨过后说下正题,经过公司中DEMO开发,我发现以前在教研室做的东西真的是乱做。原来本科学习的有限状态自动机在游戏构架上这么重要,公司DEMO中的构架是基于状态机的,用两组函数指针分别作为状态的保持(doState)和状态的切换(setState)。最近看片游戏构架的文章,标题就是写的不错,下面总结些所学到的知识:
2010-01-06 14:19:00
687
原创 11,12月计划
已经实习3个月了,感觉除了开了些眼界外,技术上没有太大的提高。计划在剩下的2个月学习工作室多年积累的引擎框架、demo、编辑器框架还有后台程序逻辑。 今天2009年11月10日,从引擎的全插件结构学起吧。
2009-11-10 10:01:00
429
原创 重载++/--运算符
今天看书,看到例子里有个重载自增运算符,前自增还比较好。看后自增的时候有点迷惑。查 c++primer才发现自己这里有知识漏洞。特此补上。 在为类定义自增自减运算符的时候要注意,如何区分前自增/自减 和 后自增/自减运算符。 1 定义前自增/自减运算符 class CheckedPtr{public: CheckedPtr& operator++();
2009-03-20 11:28:00
798
转载 Traits技术
Traits技术(转自http://comparative.spaces.live.com/blog/) 1.概念Trait的中文意思就是特性,Traits就像特性萃取机,榨取不同类的特性,以便能统一处理。Traits依靠显式模板特殊化(explicit template specialization)来把代码中因类型不同而发生变化的片断拖出来,用统一的接口来包装。这个接口可以
2009-03-19 10:50:00
1535
原创 C++中令人混淆的3个new和delete
在深入学习C++的过程中遇到3个new和delete让我十分迷惑,经过学习,有了点初步理解的感觉。总结如下 C++中,内存分配和对象构造紧密纠缠,就像对象析构和内存回收一样。使用new 表达式的时候,分配内存,并在该内存中构造一个对象,使用delete的时候,调用析构函数撤销对象,并将对象所用内存返还给系统。 C++提供了一下两种方法来分配和释放未构造的原始内存:
2009-03-13 21:25:00
1675
原创 对于静态成员指针的出现的问题
今天复习设计模式的时候,自己动手写个个小的Singleton模式的简单实现,如下: class Singleton{private: static Singleton* mInstance; Singleton(); public: static Singleton* getInstance(); }; Single
2009-01-16 23:29:00
1138
原创 c++对象学习笔记(1)
面向对象的三大特性,封装、继承、多态。从C语言到C++的转变首先接触的是类和对象。C++对数据的封装不会增加成本。C++在布局和存取时间上的额外负担是在使用virtual机制的时候引起的。一般情况下和C语言的结构体无二。 C++ virtual机制包括: 1.虚函数机制:支持执行期绑定2.虚基类:多重继承,只存在一个被共享的虚基类。 一.
2009-01-16 10:45:00
665
原创 c++模板中的 typename 和 template 关键字用法
最近在看C++的模板,虽然学了、用了C++也有一段时间,对于模板编程这一特性一直没有接触。边学习, 一边写些心得吧。1. typename关键字 不用说,接触过模板的人都知道,typename在模板声明的时候可以代替class关键字,二者可以互换,如: template class Container { public: void push(const A
2009-01-05 20:43:00
10782
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人