All Stories

Side by Side的MFC9.0 DLL和GDI+异形窗体

  自从用上了VC2008,用它来编译日历程序,就开始被Windows先进的Side by Side技术困扰着。其实说被它困扰有点过分了,毕竟是自己水平太臭,眼界太窄,见识太少。在开发机上怎么整都是好好的可以运行的,换个机器就不行了。盲人摸象般的整了几天,还是没能解决,代码是在家里写的编译的,拿着可执行文件到公司的机器就是不能正常运行。昨天晚上又在网上搜索了很久很久,终于在MSDN上看到一篇文章,虽然是以VC2005来讲的,但对VC2008是一样的原理,按照上面说的分好目标目录,做好安装包,今天拿到公司一试,果然没有原先那个什么应用程序配置错误的消息框了,终于解决这个让我郁闷了几天的问题。  不过今天偶然发现,我用GDI+实现异形窗体,在Win2003下不能显示,在公司网上找了个别人写的也是用GDI+画窗体的,也是不能显示。但装了个雪狐日历精灵的早期版本看了看,它也是用GDI+画的,却能好好地显示在上面,应该是那段代码有问题,唉,看来得用虚拟机装上2000/XP/2003,做好全面的测试才行了,不在实际的环境中运行还真不知道会出什么问题呢!

让SourceInsight消失吧

  今天组里几个人突然谈论起组织结构调整,然后我们现在做的东西命运怎么样,我们将来的命运怎么样,最后一个结论是要让我们做的东西成为精品,这样我们才有可能不被人随便摆布,不被拆散。  然后就说到重构当前这个项目的代码。说来说去,我还是去做图形编辑这块,同时兼顾文本编辑器的重构。这是我最希望的情形,对于代码编辑器,我一直有不少想法需要付诸实践,现在说起来要让这个工具能大规模被推广应用,就需要各方面都做成精品(也许这也只是我们的一厢情愿而已)。我能做的大概就是在代码编辑方面努力做好,简单说来就是能让开发人员也能用得顺手,让Source Insight从这里消失吧。目前的状况是,Source Insight缺少代码折叠、Tab标签浏览、中文支持不佳、外部接口不方便这几个大缺点,对于基本的语法着色、自动完成、语法参考还是不错的,速度也挺快的。如果把Source Insight的这些缺点补上,再加上有它的那些好用的特性,还愁不让它消失么!

Boost发布1.35.0了

  偶然发现Boost已经发布1.35.0了,还是因为看到cppblog上有人写到怎么编译1.35.0才意识到的。最近已经不像以前那样对Boost狂热了,只是觉得它是个好用的类库,而且一直以来都是直接从SVN里取得最新的源代码,根本不关心它的官方release版本是到多少了。对于大多数的Boost库来说,不需要编译,所以任何时候从SVN里取下来的代码一般都是可以直接使用的,更加让我对正式发布版本的忽视。  先到news group上看了看,果然有发布公告,然后到官方网站看,只是提到一些新添加的库,其实这些库我好早就已经从SVN里取下来,压根就不晓得原来还没有发布,呵呵。

拖太久了

  这个日历程序拖太久了,最早以为去年就能完成的,后来计划改到农历年前,以为春节几天假期里可以弄完,谁知生了场病,于是给了自己一个再次跳票的理由,回来后以为2月底前可以做好吧,可是还是不知不觉过完了2月,这个东东的进展却很小,最后就想,第1季度应该可以完工吧,现在很明显,已经是3月底了,马上就是第2季度了,前段时间只顾着看小说去了,呼呼。  实在是忍不下去了,先把桌面日历部分完成再说。  桌面日历大框架已经成形,还剩下带农历支持的月历、指针型时钟两个主要功能,先把目标放在这上面吧。  昨晚上网随便搜了一下,就找到几个看起来还可以的时钟软件。时钟软件在界面上的策略基本上跟日历软件差不多,都是可以支持换肤的,只不是可支持的灵活性有点差别。把其中两个附带的皮肤的图片抓出来,嘿嘿,我这里用一下下。

堕落了几天

  这些天为了看一部网络小说,很是堕落啊,还熬过一个通宵,之后就一直没恢复过来,整天昏昏沉沉的。  开源里好东西还真是不少,前些天在公司网上看到有人提到一个libEtPan的库,原来是一个mail库,提供了pop3、imap、smtp、nntp等协议的支持,简单看看觉得还是挺有用的一个东东,可以放在程序里,结合程序崩溃报告,提供一个比较友好的用户体验。

编译log4cxx

  突发奇想,想编译log4cxx来试试。在官方网站上只看得到0.9.7的源代码包,这个源代码包是有VC工程文件的,可以直接用VC.NET2003打开升级工程文件进行编译,最后生成.lib和.dll文件来用。不过这不是我的目标,我想编译的是直接从SVN里取出来的代码,其实是偶然间看到硬盘上好久以前写的一个从SVN里CO出log4cxx源代码的批处理文件,里面只有一行内容:svn co http://svn.apache.org/repos/asf/logging/log4cxx/trunk loggin-log4cxx,随手点了一下就把文件都取下来了。看了它的INSTALL说明,就很想把它编译出来。  编译需要用ANT,要是在不久之前,我肯定直接放弃,不过前些日子搞CruiseControl时,也看了几行ANT脚本,至少知道ANT是用来做像make那样的事的。刚好CruiseControl中带了一个1.7.0版本的ANT,满足它1.6.1的要求。还需要cpptasks.jar和ant-contrib.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=36177下载,解压到ANT的lib目录下即可。接下来需要apr和apr-util,不知道这是干什么的,但反正编译时会去找它们,把它们的源代码和编译好的二进制文件都下载来,因为我尝试用VC2003直接编译它们的源代码并不能正常通过,所以也懒得弄了,把源代码分别解压出来,命名为apr和apr-util,再到它们的include文件夹中,把几个后缀为.hw的文件复制一份后缀改为.h。  需要准备的东西差不多齐全了,在运行ANT进行编译前,先修改一下build.xml文件,里面有几处名为comment和dependency的节点,注释掉,不知道干什么的,反正我编译的时候这里会报错,注释掉后就能通过了,而且好像对生成的文件没什么影响。再看看该文件中为VC6编译写的一小段配置项说明:-Ddebug=[true|false]-Doptimize=[speed|size|none]-Dversion=n.n.n-Denable-shared=[yes|no] (default yes)-Denable-static=[yes|no] (default yes)-Denable-char=[0, 1] (expose char* API, default 1)-Denable-wchar_t=[0, 1] (expose wchar_t* API, default 1)-Denable-unichar=[0, 1] (expose UniChar API, default 0)-Denable-cfstring[0, 1] (expose CFString API,...

搜了一天简历

  简直想吐啊,太无聊了,又完不成任务,要求那么多,根本是浪费时间嘛。有空写个程序来自己搜简历得了。大概的想法就是调用IE的接口,几乎所有的IE页面上的元素都可以通过COM接口访问到,除了验证码不能自动识别外,其它部分应该都可以用程序完成。另外还有个问题是,输入email和手机号后,要点击一个按钮看是否重复,这时它会弹出一个MessageBox,这该如何处理,我猜IE也是有接口可以屏蔽掉这个alert的,或者说可以直接把整个javascript脚本都替换掉,不过也仅仅是猜想而已。最熟悉的做法是在后台开个线程,监视是否有MessageBox弹出,然后自动获取MessageBox上的内容,再自动点一下那个确定按钮,呵呵。  不过想法虽好,到时候极有可能就不了了之了,这写个程序还是挺花精力的,呵呵。

Logging被Boost拒绝了

  昨天晚上回来看news group上的消息,前不久提交review的Logging库被认定为unacceptable,所以暂时还是没有日志库用了。今天看到Logging的作者说,打算再根据这些review意见写一个新的,估计在七月中下旬提交review。  一直需要一个好用的日志库,但看来看去都没有觉得满意的。ACE太庞大了,日志功能只是一个辅助,log4cpp和log4cxx不知道哪里惹到我了,就是有很大的抵触情绪,不想用。于是一直在等待Boost::Logging的问世,谁知还得等待。  希望不会让我等太久。

看到一线光明一丝曙光了

  经过不短时间的调试,下午终于可以显示出一个虚线画出的矩形框来了。虽然还只是一个虚线框,不但大小改了,位置也没计算好,而且还把连接线都丢了,但是总算是出来了。这一小步,对这个东东的进程来说,其实也是一大步。接下来就是计算一下连接线的位置,就差不多了啊,吃晚饭时那种喜悦放松的心情真是很久没体会过了,呵呵。  调试过程还是比较让我觉得痛苦的,首先是我的机器上Office 2003装好后,居然在我的程序里通过COM接口运行Excel时说注册码不合法,晕死,这可是公司大企业客户版啊!同事丢给我一个算号器,发现有两个Office 2003,用了不同的序列号,晕,另外一个怎么也找不到在哪里,今天上午一气之下把所有的Office这个字眼沾上关系的全让我卸载了,然后装了个Office 2007,偶然发现不再提示注册码不合法了,呼呼,真是玄乎呀。  不过后来发现,有一个函数用来把Excel里的图形复制到系统剪切板中,然后再取出来存成GIF格式,当时一直在2003下处理,用了个魔鬼数字,直接取出指定编号的那种类型的剪切板数据,现在发现那个索引下的不是GIF格式数据了,呵呵,还意外发现了这么个bug呢!  另外还发现个有趣的问题,因为调试经常把Excel整死,若干次后,它居然弹出个对话框说Office似乎经常崩溃,什么深表歉意云云。  终于快要脱离这个苦海喽,回头是岸?