2013年9月10日

【boost】使用装饰者模式改造boost::thread_group

摘要: 在项目中使用boost::thread_group的时候遇到几个问题:1、thread_group不提供删除全部thread列表的方法,一直使用create会是其内部列表不断增加。2、thread_group不提供try_join_for等方法,在线程中等待时,无法调用peekmessage函数来重新激活消息队列。由于thread_group的接口本来就比较小,因此可以直接重写,但是这个时候使用装饰者模式无疑更加方便。namespace boost{ class thread_group_ex { private: thread_group_ex(thread_... 阅读全文

posted @ 2013-09-10 11:49 小水坝 阅读(1706) 评论(0) 推荐(0) 编辑

2013年8月20日

【VC】VC工具栏图标合并工具(非tbcreator和visual toolbar)

摘要: VC开发难免会用到toolbar,在没有美工的时候,大部分时间我们只能自己上。第一个方法:fireworks/photoshop平铺。现在的图片资源大多为背景透明的png图片,虽然fireworks工具可以直接平铺多个图片生成toolbar图片,但这是建立在每个图片实际大小一致前提上,由于背景透明,很多显示16x16的图片,用fireworks打开后会比实际小,这种情况下,平铺出来的图片自然会有差错。第二个方法:使用TBCreator。这几乎是所有vc toolbar图标制作教程的推荐。的确,用TBCreator可以做出效果很好的toolbar图片,但是。。。。这货却不支持批量添加图片!!在图 阅读全文

posted @ 2013-08-20 12:31 小水坝 阅读(2039) 评论(0) 推荐(0) 编辑

2013年7月31日

【boost】使用lambda表达式和generate_n生成顺序序列

摘要: 程序中经常用到顺序序列(0,1,2,3,4,5,6.。。。。),一直羡慕python有range这样的函数,而C++中通常只有用循环来处理这种初始化。现在,结合boost库lambda(虽然差C++11的几条街),我们也可以写出这样的初始化函数: deque coll1; int first=0; //将coll1初始化为0-9,first需要使用var适配lambda generate_n(back_inserter(coll1), 10, var(first)++);结合lambda,你几乎可以以这种极优雅的方式写出绝大部分初始化函数 阅读全文

posted @ 2013-07-31 22:18 小水坝 阅读(668) 评论(2) 推荐(0) 编辑

2013年7月30日

【boost】BOOST_LOCAL_FUNCTION体验

摘要: c++11里支持使用lambda在函数内定义本地嵌套函数,将一些算法的判断式定义为本地函数可以使代码更加清晰,同时声明和调用靠近也使得更容易维护。遗憾的是公司开发平台任然停留在vs2008,使用boost库的lambda表达式来模拟实在是有些笨拙与晦涩。偶然在论坛上看见boost1.50版本后引入了BOOST_LOCAL_FUNCTION宏,官方简介如下:http://www.boost.org/doc/libs/1_54_0/libs/local_function/doc/html/boost_localfunction/tutorial.htmlLocal FunctionsLocal f 阅读全文

posted @ 2013-07-30 18:34 小水坝 阅读(921) 评论(0) 推荐(1) 编辑

【boost】MFC dll中使用boost thread的问题

摘要: 项目需要,在MFC dll中使用了boost thread(),LoadLibraryEx的时候出现断言错误,去掉thread库引用后断言消失。百度google后,在CSDN中找到一个答案,先贴出来:{boost::thread+MFCDLL問題 基本上這個問題在boost1.38就有了,只是沒想到更新成boost1.45後問題還是沒有解決... 如果是使用MFC开发程序,又剛好建立的MFCDLL工程中有使用boost::thread,就會發生compile正常但是一執行程式出現ASSERT。 dllinit.cpp,Line:587,ASSERT(AfxGetModuleState()!=A 阅读全文

posted @ 2013-07-30 10:12 小水坝 阅读(859) 评论(0) 推荐(1) 编辑

2013年4月16日

【转帖】C++编译原理 资料

摘要: 转自:http://blog.csdn.net/shiwenbin333/article/details/5157797首先是预编译,这一步可以粗略的认为只做了一件事情,那就是“宏展开”,也就是对那些#***的命令的一种展开。 例如define MAX 1000就是建立起MAX和1000之间的对等关系,好在编译阶段进行替换。 例如ifdef/ifndef就是从一个文件中有选择性的挑出一些符合条件的代码来交给下一步的编译阶段来处理。这里面最复杂的莫过于include了,其实也很简单,就是相当于把那个对应的文件里面的内容一下子替换到这条include***语句的地方来。 其次是编译,这一步很重要, 阅读全文

posted @ 2013-04-16 09:47 小水坝 阅读(516) 评论(0) 推荐(1) 编辑

2011年9月12日

IE6,7下password框长度变短问题

摘要: IE6,7下同等字数password和text的长度不一样,这是字体不一造成的,解决办法就是password和text使用相同字体css添加input{font-family:'Verdana';}问题解决 阅读全文

posted @ 2011-09-12 20:14 小水坝 阅读(206) 评论(0) 推荐(0) 编辑

2011年8月7日

dwz局部表格分页

摘要: 项目中用到了,赶了一个,经测试,勉强可以使用。由于我的局部分页不用搜索,所以没有扩展搜索功能,等空闲下来做个比较完整的。这个就给和我一样,项目上有急用的人用吧。主要修改了dwz.core.js 中的ajaxUrl函数,dwz.ajax.js中的dwzPageBreak,添加divPageBreak, dwz.combox.js,使用时,将局部刷新的页面(包括pagerForm)一起放到一个div中,为他指定id=“xxx”,pagination中target="div-xxx",页面显示条数的combox添加target="div",divId=&quo 阅读全文

posted @ 2011-08-07 10:04 小水坝 阅读(3104) 评论(7) 推荐(0) 编辑

2011年6月28日

dwz中combox的value问题

摘要: dwz手册上说combox设置value=xxx,代表选择项。实际应用中发现总是会显示第一项,打开dwz.combox.js代码:1var$this=$(this).removeClass("combox");2varname=$this.attr("name");3varvalue=$this.attr("value");4varlabel=$("option[value="+value+"]",$this).text();5varref=$this.attr("ref") 阅读全文

posted @ 2011-06-28 09:52 小水坝 阅读(3004) 评论(0) 推荐(1) 编辑

2011年6月27日

dwz中使用flot,js报表等js插件

摘要: 由于dwz是使用jquery ajax load函数加载页面,在执行$.ready方法的时候顺序并不固定,有可能在页面还没有加载的时候,执行了插件的js,这个时候就会导致js错误。解决的方法有两种:将插件的js绑定到按钮事件而不是$.ready,这样保证执行js的时候, 页面已经加载完毕。使用setTimeout函数,延迟加载js,并加入document.readyState="complete"的判断,保证页面加载完毕 阅读全文

posted @ 2011-06-27 11:12 小水坝 阅读(872) 评论(0) 推荐(0) 编辑

导航