All Stories

Ebookshelf W.I.P #11

  除了界面不好看之外,功能倒是绝大部分都完成了。先是把virtual listview多选不准确的问题解决了,用了一种很土的方法,遍历每一个记录,看是否被选中。把指定文件的打开方式部分也稍微修改了一下,先主动创建进程,如果不成功,再用ShellExecute指定程序打开或用ShellExecute让Windows来决定用什么打开。还在状态栏里加了个进度条,在导出列表的时候,如果记录比较多,就可能会花比较长的时候,如果中间没有什么提示还真会让人误解,所以这时候用进度条就最合适了。顺便发现了几个小错误。另外还可能会有问题的地方是,在TreeView中填入的文字,在用SQL语句写入Access时,可能会有单引号的问题。这也是个挺让我觉得奇怪的事情,为什么SQL语句中不能用单引号,写两个单引号就没有不会报错了,但写入的就是两个单引号了,这样读出来的时候还要自己在处理一遍,把两个单引号的地方改成一个单引号显示出来。  其余的顶多是加个Shell右键菜单项吧,这个也可考虑用比较简单的方法实现,给*.*类型的文件加个项,打开的时候因为会把路径传进来,所以就可以处理了。  另外就是,做个像CyberArticle样子能收集网页上文字的程序,本来这个功能想做在Ebookshelf里的,不过感觉两个东西的功能差别还是比较大的,合在一起感觉比较怪。所以还是单独拿出来好了,关键点是要能至少支持IE6/7和Firefox 1.5/2.0。

今天疯丫头请客

  在梅林吃了2顿,就像当时我请客那样。中午小肥羊,下午打牌下棋,晚上吃竹筒饭。  早上9点不到就睡不着了,于是起床玩电脑,把csdn上的blog内容用LaTeX做成PDF格式保存起来。过了11点,出去坐328,居然遇到教授,在梅林街道办下车的时候才11点40,觉得太早了,于是跟教授去逛了一下金帝巧克力吧,教授买了一盒外包装是心形的巧克力。然后2个人慢慢吞吞走过去,到了小肥羊门口还是不见什么人,我和教授说,会不会被人晃点了呢,我们要反晃点。于是我先给疯丫头打电话,说教授被车子擦了一下在医院,要交2千元押金,快点送来。疯丫头半信半疑给教授打电话,教授说在她家楼上,要她去接。这时疯丫头已经一个人跑到小肥羊店里来了。非常不巧的是,悍超这时候也来了,疯丫头便要他一起去找教授,我和教授看着他们2个进去店里,以看他们要出来了,连忙分散躲起来,看到疯丫头在给教授打电话,我便给悍超打,没想到他竟然走过来了,我就被发现了。于是我们3个人上包间里去等教授,教授只一小会儿就也来了,呵呵。要不是悍超,估计疯丫头就真的去找教授去了。  后来陆陆续续大家都来了,教授和疯丫头出去买饮料。疯丫头打电话给猫猫,说没带零钱,要猫猫去接。猫猫说教授已经去了呀,于是还打电话给教授。我们使劲劝猫猫不要打,人家肯定是在一起,串通好的,可是猫猫这人就是不听,还硬要打,打完教授还要打疯丫头的。过了一会儿,教授满头大汗的样子一个人空手回来了,说是没找到疯丫头。猫猫急了,我们剩下的人就说,快去找吧。于是猫猫真的出去了,一出去我们几个就笑起来,一边吃火锅一边看着疯丫头和一脸无辜的猫猫回来了。呵呵,猫猫也真傻,但为什么不肯听别人的劝告呢。  吃完火锅,先去了一下梅林那边的一个基督教堂。差点出不来,里面人很多,都很有心得地讨论各自的遭遇和体会,但不好玩,我们又都不信教。然后我们又去了上次去过的茶艺馆找了个大包间3个小时。其它的人都打麻将去了,我则又跟疯丫头一起下五子棋,下得头昏脑胀的。一直到7点才出来,找了家湘菜馆,各人点了个饭,吃了便回来了。  总之,这样出来玩,还是多开心的。

Ebookshelf W.I.P #10

  把设置对话框做得差不多了,就是从注册表中读取打开方式的时候稍微还有点点问题,另外把查找功能也做了,剩下就是把ListView多选的问题解决掉,以及其它一些小细节处理了就可以了。

TeX/LaTeX有点意思

  几乎又是玩了一天TeX/LaTeX,我觉得最大的障碍还在于文档系统的不完善,大概是被MSDN惯坏了,什么事情都希望有个大而全的文档可以随时查阅。它相当于一个编程语言,但它只能描述相关信息,却没有能力进行复杂的逻辑运算。其实要用它很简单,只要能找到完整的参考手册就行了。  遥祝小玉玉生日快乐,去年跟她说如果明年还可以帮她庆祝生日……这是不是就意味着某种暗示是不能了呢?世事无常啊!

Ebookshelf W.I.P #9

  这两天不知道怎么了,总是觉得眼睛花花的,其实就是想堕落一下,呵呵。回到家,坚持写了一会儿代码,又跟人QQ扯皮了一会儿。效率果然很低呀,这里改点那里改点的,还是没把设置对话框全部弄完。如果不是可以用Boost库里的一些东东的话,自己弄可能还要更慢些,当然为了用Boost库,也是要花时间在学习上的,Boost的文档可以说在开源领域里是做得算很好很好的了,不过里面的例子太少了,而且不知道是不是因为我对英文不习惯的原因,总觉得找不到全部我想知道的信息。说起来Borland的文档也是糟糕呀,BDS2006中的都不知道把原来的例子代码片段放到哪里去了。  这个小程序里,用到了Boost的Foreach和string_algo库,我猜其实我用到BOOST_FOREACH的地方是可以用Lambda和std::for_each来代替的,不过不熟啊,呵呵。已经搞得差不多了,设置对话框里只剩下搜索注册表中文件关联信息了。  白天在公司,看了一下Latex的相关资料,觉得还是多好玩的,回来把CTex装上,发现里面带的工具还真是全。以后得好好学一下,因为用这个可以做PDF格式的文档出来,可以不用D版的Word、PDFFactory这些软件了。

Ebookshelf W.I.P #8

  人又有点犯懒了,不是很想动了。画了个设置对话框,里面的代码就都留着不写了,查找对话框也不画了,直接用系统定义的那个了。白天在看Boost的文档时,偶然发现有个string algo库,可以对string进行一些诸如查找、替换、分割等操作,这样就方便了,可以把那块引号变换的代码省掉了,自己写的还指不定什么时候出现问题呢,现在就一行代码搞定喽。  鉴于人越来越懒,决定把设置对话框和查找功能完成,再把那个ListView多选的bug除掉,就算1.0版完成吧!

Ebookshelf W.I.P #7

  主窗体类的实现文件又变成有1000多行了,郁闷。能导入导出目录结构了,这样就方便很多了。基本上弄完了主菜单和工具栏了,但也更难看了。翻开以前的计划看了看,原来还要加IE/Shell右键菜单啊,要能收集了网页文件后再打包成chm格式啊。要做好一个程序真难啊,还有些bug没解决。还要加注册和设置的功能。

Ebookshelf W.I.P #6

  把ListView改成可以多选的virtual listview,有点问题,有时候不能获取到全部的被选中的项,在csdn上也看到有人有这样的问题,不过并没有提到解决办法,只是说用普通的ListView就没有这样的问题,难道我也改回去。改回去除了显示速度变慢这个缺点外,能得到另外一个好处,就是如果从后面添加了记录,不用全部刷新整个ListView。  原来那个OnEdited的事件是可以用的,它的参数中最后一个就指明了新的标题,而指向节点的那个参数里的标题属性还是老的,这样也好呢,可以决定是不是在某些时候不应该被修改。  另外想到,应该有个搜索功能,至少能按书名,或文件路径来搜索。其次是,有点想加个ListView和TreeView间的拖拽功能。拖拽以前都没做过,不知道麻烦不麻烦,其实我觉得这个小程序最麻烦的是数据库操作了。  今天从浏览器登录到Gmail中时,突然想到,如果邮件客户端的界面可以做成像这种,应该也很炫哦,把所有相同主题的列成一个,然后可以在一个浏览窗口中统一浏览。看了一个Foxmail、Dreammail、Koomail、Outlook、Notes都是没有这种界面的,其它的客户端程序也不了解,不过Gmail这样的可能也算得上是首创的了吧。然后我就又有点发神经了,想自己写个客户端了。

Ebookshelf W.I.P #5

  终于有点实用功能了,可以把磁盘上一整个文件夹下的所有符合要求的文件都导入到相应的节点下去了。在TreeView中用鼠标点击选择某个节点后,也能列出相应的记录。虽然效率是低了些,但是功能总算是完成了。突然想到,ListView应该可以多选,TreeView中右键中应该有个可以选择文件进入导入的选项,而不光是导入整个文件夹。还应该加个选项,可以校验磁盘文件的有效性,自动把失效的记录删掉。总觉得界面是太丑了,想让ListView中可以在每条记录前面添加一个对应在Explorer.exe中显示的图标,另外,如果让Toolbar中显示的图标是32bits的,会不会好一点。  再有,Access创建的文件实在太大了,添加了几条记录后,就变成900多KB了,用WinRAR压缩了一下,变成40多KB,原来压缩空间有这么大,就想是不是可以集成压缩和解压缩功能,这点用7z或zlib都可以实现,不过没研究过怎么在BCB中使用,而且以前也没研究过怎么使用压缩功能,只研究过在VC下来解压缩。