重编译openCV

现在3.X的openCV似乎默认没有生成x86版本的lib和dll了,需要自己重新生成一份。(使用的环境是Win7x64 + vs2015)

  1. 准备工具
      openCV(3.2.0)
      CMake(3.7.2)


jpeglib的使用(使用VS2010编译)

1、编译环境的安装
  1.1 解压从www.ijg.org上下载的源码,安装VS2010。
  1.2 在打开cmd定位到解压后的jpeg库目录中,并执行 NMAKE /f makefile.vc setup-v10 。(在install.txt的”HINTS FOR SPECIFIC SYSTEMS”一节中)此操作将生成(其实是重命名)vs2010的一系列工程文件。(提示nmake不是有效命令的话则修要设置环境变量的path并重启cmd)


XAudio2 Operation Sets 操作集

部分XAudio2的方法中含有OperationSet参数,这个参数能决定是否延迟执行这些方法(仅添加一个挂起的操作)。然后在某个特定的时间通过调用XAudio2::CommitChanges,并将它的OperationSet参数指定为目标操作的ID,这样就能让XAudio2组件真正执行对应的操作。这个ID没有特殊要求,只要互不相同即可,因此可以用一个全局计数器来作为它们的ID,每次使用后增加计数即可。这样一来,不同代码就可以互不冲突地提交修改(全局计数器同时也可用于区分提交修改的时间先后)。

同时,以原子方式提交的多个操作被确保是以采样率匹配方式混音的(一个混合音轨方面的术语,防止混音时因采样率的不准确而导致播放时长的变化,详见这里)。比如,声音的播放将会是同步的。另一方面,如果用XAUDIO2_COMMIT_NOW(值为0)作为OperationSet参数的值,改动将立即生效。如果以XAUDIO2_COMMIT_ALL(值也为0)参数调用CommitChanges,则所有挂起的操作都将生效,这时OperationSet的ID将被忽略。


虚拟列表的使用

ListView控件在添加大量数据时速度很慢而且会频繁刷新以至于窗口不断闪烁,总之是没法用啦,这种情况把控件改成虚拟列表的形式就能解决这个问题。

虚拟列表不在控件中存储数据,而是向外部“索要”数据,即数据是由我们自己维护的,它唯一保存的数据是控件中项目的数量。虚拟列表通过 LVN_GETDISPINFO、LVN_ODFINDITEM和LVN_ODCACHEHINT这三个消息与外界交互。

创建虚拟列表控件

使用CreateWindows(Ex)创建控件时加上 LVS_OWNERDATA 样式,这样创建的就是一个虚拟列表了。注意,虚拟列表样式只能在创建时指定而无法在创建后添加或移除。


Tpk解包记录

一款网络游戏《武圣》的资源封包,资源未加密未压缩,只是索引的分布是根据文件名加以计算来确定的,当然索引本身也没有任何处理,提取资源还是直接地毯式搜索来得快。

放张图


世界,您好!

欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!