RSS Feed

‘code’ Category

  1. Qt增加LGPL协议

    一月 14, 2009 by bborn

    今天看到新闻
    qt4.5将增加LGPL协议 很是兴奋了一下
    之前qt的开源版是GPL协议的
    因为这点 很多商业公司选择了gtk+

    下面是个人对qt和gtk+的一点肤浅看法
    安装上qt非常大 下载好还需要编译
    gtk+可以选择下载gtkmm 安装包
    包含有vs的项目属性表(vsprops file)
    如果使用vs studio 不用配置就可以开发 很方便

    qt的设计出来的界面看起来更好看一些
    而且gui的设计工具很方便
    i18n的解决方案也很好用
    文档多 上手容易

    前一阵学习了一下gtk+
    发现使用gtk,glade和pygtk一起开发
    非常的酷
    界面和功能可以完全分离
    不过缺点是界面的可视化设计不好用
    需要非常熟悉各个属性才能让widget按所想的位置搭配
    而恰恰文档比较少 很是郁闷

    qt因为出来的比较早
    里面有一套类似stl的东东
    还有一些宏
    可能会用起来不习惯
    gtk+没有做造轮子的工作

    个人来说 还是喜欢qt一些
    漂亮 好用 文档多
    有商业公司的支持 个人感觉稳定一些
    之前用gtkmm和glade 一直就没有搞好一个例子 咳


  2. 关于系统钩子的一些问题

    十二月 16, 2008 by bborn

    上个周末闲来无事
    想来做了一个computer-based training (CBT)全局系统钩子(global hook)
    本来想着挺简单的事情
    没想到其中碰到了很多问题
    现在小小总结一下
    包括我遇到的问题,想到的原因及找到的解决办法
    我的系统环境是Vista Ultimate sp1, Visual Studio 2005 sp1

    一般来说,做一个全局钩子,需要dll
    恩 差不多是这样
    不过对于鼠标键盘钩子是例外
    我们还是老老实实的做dll吧
    调试发现只能收到自己程序的消息
    奇了怪了, 全局钩子变成了本地钩子,为什么

    做一个全局钩子
    需要做一个共享内存
    我想主要是为了保存一个窗口句柄
    以便接收消息
    当然也可以不这么做
    像这篇文章Using Window Messages to Implement Global System Hooks in C#

    SetProp(GetDesktopWindow(), “WILSON_HOOK_HWND_CBT”, destination);
    HWND dstWnd = (HWND)GetProp(GetDesktopWindow(), “WILSON_HOOK_HWND_CBT”);

    不过我实在不知道他干嘛要这么费劲

    我是使用#pragma data_seg()来跨进程保存数据的
    使用时要注意,变量要初始化

    开始的时候,我是在dll里的钩子的回调里写trace
    这实在是个低级错误
    后来改到主窗口的消息处理函数里
    发现在调试的时候只能收到自己程序和vc的消息
    想想难道在调式的时候,调式的程序挂在vc下面
    而收不到别人的消息?(后来发现这个推断是错误的)
    不管怎样 这次程序基本上可以工作了

    做完这些工作 以为万事大吉
    (更多…)


  3. Launchy 2.12 修改+汉化

    十一月 16, 2008 by bborn

    官方的launchy升级到这个版本很久了
    但是我一直没有跟进
    主要是觉得上一个版本用的挺好的
    我也没有什么新的需求
    不过一,确实存在一些小bug
    二,有朋友想用新的版本
    那我还是继续努力吧

    这个版本基于svn上 Revision 383的代码来编译
    看了作者comment是2.12 应该就是这个了

    主要的改进有
    1 支持中文的全拼,支持中文多音字。
    2 修复了不支持原生插件的问题
    具体参看这里 http://code.google.com/p/launchy-chinese/issues/list?can=1&q=

    还是要啰嗦下特色功能
    1 支持双击快捷方式, 初始安装默认是双击“ctrl”, 我最喜欢,非常酷
    2 支持中文检索,更方便和适合我们

    中文汉字转拼音的方法采用了李先静的pinyin-kit
    作者的blog是http://blog.csdn.net/absurd
    推荐一下
    非常简单好用 遵守GPL协议
    不过在vc下编译会有问题,恩
    推荐使用gcc来编译

    GPL的规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,
    该修改文本的整体就必须按照GPL流通,
    不仅该修改文本的源码必须向社会公开,
    而且对于这种修改文本的流通不准许附加修改者自己作出的限制。

    所以如果想在商业代码中使用请慎重

    已经制作了安装包 并上传
    去这里下载吧
    http://code.google.com/p/launchy-chinese/
    代码也同步更新


  4. 在windows平台编译FFMPEG的静态链接库

    十一月 7, 2008 by bborn

    这篇日志记录了我编译ffmpeg和x264的经历
    包括我遇到的问题,想到的方法,解决的思路和办法
    我的环境是windows平台下,使用最新的代码
    在vc2005下的工程中静态链接使用

    这几天一直在琢磨H264的解码库
    因为之前用的从ffmpeg提取出来的代码比较老
    在某些情况下会crash
    也是ffmpeg工程组论坛上找到了
    hust_xcl 提取的解码代码(看id应该是校友呢)
    我使用它解出来的图像马赛克现象非常严重
    并且有比较多的内存泄露
    权衡了半天
    决定还是自己动手吧

    目前开源的h264的解码大概都是在用ffmpeg
    不止是h264, 包括各种视频的解码及转码
    那些视频网站的后台可能都是跑着ffmpeg
    他是个很强大的库
    但是在windows平台的编译却很麻烦
    先让我发会牢骚 不吐不快
    首先,搜索到的国内的资料基本都是抄,转载
    链接的网址都无效了
    有些概念我认为是错误的
    ffmpeg工程组论坛似乎只有admin一个人回帖
    很多问题之后都不了了之
    即使解决了也不贴出解决方案
    而且一些问题的解决的方法
    都是知其然不知其所以然
    不分享 不深究
    这种态度不行啊
    (更多…)


  5. 得到文件默认的打开方式

    十月 16, 2008 by bborn

    在windows下
    如果想知道自己的程序是不是某个文档的默认打开方式 怎么做?

    如何查询一个文档的默认打开方式
    注册表
    在 root 下可以查到扩展名的打开方式,不过并不准确
    如果更改文档的默认打开方式,在这里可能反映不出来
    有可能是在user…OpenWithList里
    总之,我也没有弄清楚这里的规则
    api FindExecutable
    很简单的函数,不过需要一个真实存在的文件才能验证
    有些局限性
    AssocQueryString
    在查询FindExecutable的时候看到这个函数
    功能很多,但不知道为何第一个参数为何要置为0

    wchar_t ExePath2[MAX_PATH] = {0};
    DWORD len = MAX_PATH;
    HRESULT hr = ::AssocQueryString( 0, ASSOCSTR_EXECUTABLE, L”.mp3″, L”open”, ExePath2, &len);


  6. 转换视频文件到psp上播放

    八月 15, 2008 by bborn

    上次看见苹果的itouch里的一首歌 shake it
    很不错 从电驴下拖了下来
    今天想转换到psp里看看
    希望通过psp的原生支持来播放
    不想用第三方播放器播放(如PMPlayer)-麻烦

    当然还是用mencoder来转换
    网上有个国人写的mencoder gui程序
    不过好像没有遵守规则mencoder的GNU General Public License规则

    首先在MPlayer的网站上下载MPlayer
    其中会有一个mencoder程序
    之后到命令行下输入下面的命令即可
    注意最后是源文件名和输出文件名
    其实我是学习了这里
    那有更详细的解释

    mencoder -ofps 30000/1001 -sws 10 -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=libx264:vhq:vbitrate=400:vrc_maxrate=4000:coder=1:level=21 -oac lavc -lavcopts acodec=libfaac:abitrate=96 -of lavf -lavfopts format=mp4 -af resample=48000,volume=10 -vf harddup,scale=480:-3,expand=480:272:::1 d:\metro_station-shake_it-dvdrip-x264.mkv -o output.mp4