共4页: 1 2 3 4 
@小明
为模式而模式当然不对,但是很多时候你会不自觉地用到设计模式,因为同类问题已经有了一种被大家证明是最合理的方案(模式)来解决。
上面的问题你有更好的解决方案吗?
@sharkcc
涉及到很多模式, Template, Decorate, Composite, faced, Visitor等
嫌文字太多可以直接下载最后的源代码看, 相信会有所收获。
re: 生成DirectUI 控件树的设计过程 Richard Wei 2012-06-11 18:12
@饭中淹

没太看明白你说的问题, 但是我想对于UI来说很多东西是类似的,
就一个UI(窗口)本身是一棵递归的树,内部有容器和控件,相当于树的分支(node)和树叶(leaf),并且可以无限递归, 这个层次很符合Composite模式,也很符合用XML来描述。

所以现在比较流行的UI框架(比如WPF, WEB页面)都分2层来描述,一层是标记(markup). 比如WPF里的XAML, Web页面里的HTML; 另外一层是代码(code), 比如WPF里用C#, Web页面里用javascript.

其实本质上code部分才是真正的实现,内部定义了所有的控件层次, 所以即使不依赖markup部分,我们同样可以定义和操作所有的UI, 但是借助Markup可以让我们更方便的生成和修改UI。

至于用不用Prototype模式不太重要,我这里的想法是让控件有默认的风格属性,而且这个默认风格属性也是容易修改的。通过用Prototype,我可以在XML里定义默认的控件原型,程序初始化时用该原型来注册控件就可以了。另外, 如果有些控件你觉得用不到,不去注册就好了。 这种注册机制, 对于支持插件(控件)也很方便,你觉得呢?
@10年码农
你说的我也明白,其实就是体力劳动和脑力劳动的差别,在中国体力不值钱,但是脑力劳动可以让你满足基本的生活需要外还有些闲钱。

另外,感觉国内其实大家都过得都比较累,无论是上面的官员,还是城市的中产房奴,或是底层的农民。
@Peter Wang
是的,但是人家的知识更新要慢得多。
比如古代的一个厨师,到现代的话只要学下怎么用煤气灶就可以继续干活了。
但是如果是一个DOS程序员转换到Windows开发就不那么容易了
@CapaLin
其实任何一个稍微有点规模的程序,都是上述知识体系的结合,开发一个优秀的软件尤其如此。
依赖于编译器的内存布局, 不敢用。
C++11新增了array类来替代C型的原始数组。
re: C++11新特性不完全测试 Richard Wei 2012-06-07 08:35
@周星星
是的, 不好意思,写错了,应该是VS11(Visual Studio 11 Beta)
多谢指正。
re: 试论C++类库开发之难 Richard Wei 2012-05-30 18:19
的确,C++ STL提供的都是最基本的功能,上层应用的库还是要自己封装
re: MFC,一开始就错了 Richard Wei 2012-05-30 18:14
哈哈,恭喜,博主终于醒悟了
re: OOP的黄昏 Richard Wei 2012-05-24 21:27
在C++11中没有看到concept, 不知博主有啥看法?
@请教一下
没环境,让客户不要装360吧 :)
@请教一下
好像没有你说的半透明失效问题,可以参照我上传的测试代码。
至于360是否拦截,我就不知道了, 理论上这个不是安全问题,不该拦截的。
@Duwen
windows NT内核初始化时就有3个堆,且余留大小都是1MB,提交大小是8KB,其中一个是系统默认堆, 我们调用GlobalAlloc(),就是在默认堆里分配的内存。
C/C++ CRT会创建自己的堆,我们平时new对象,都是在该堆里分配的内存。所以我们一般看到的程序起码有4个堆。
另外如果你用了COM组件(调用了::CoInitialize(NULL)), 他也会建立自己的2个堆,CoTaskMemAlloc() 和 SysAllocString()都在在里面分配的内存。
一般写应用程序,理解到此就够了,再深入就要看Windows内核的源代码了。
@Duwen
堆栈大小一般默认是1M,但是VC在编译时是可以通过/STACK :reserve[,commit] 设置的

另外对象所在位置, 除了堆(Heap)和栈(Stack),还有静态存储区等
@jk
有什么方法, 希望可以学习下。
@Duwen
多谢指正,希望共同进步。

恩,可能表达不是很清楚,我上面说的堆栈其实指的就是栈(Stack)。

至于堆(Heap), 每个进程除了默认堆,还有其他的, 比如C/C++ CRT就会创建自己的堆,我们每次new对象,默认都是在该堆里进行的。所以如果我们写程序时每个模块(DLL)用静态方式链接CRT,在DLL内new对象时都会在DLL自己的CRT堆上创建对象。

re: QQ截图时窗口自动识别的原理 Richard Wei 2012-05-07 16:03
更正下,用工具看了下QQ截图时的全屏窗口,发现它没有WS_EX_LAYERED属性,也没有WS_DISABLED属性,所以QQ截图在获取最外层Popup窗口时应该不是用ChildWindowFromPointEx获取的。 而应该是通过Z-Order从上到下枚举(EnumWindows)所有可见并且非Transparent的Popup窗口, 这样他们可以过滤掉自己的全屏窗口,找到第一个鼠标所在位置的Popup窗口,然后再用ChildWindowFromPointEx获取里面的子窗口。
re: 一个高效的内存池实现 Richard Wei 2012-05-07 08:39
@ithaca
不好意思,有点误导,应该是这本书,
《提高C++性能的编程技术》
re: 一个高效的内存池实现 Richard Wei 2012-05-06 09:35
@zgpxgame
是的,适用经常分配和释放的同一类型的对象。
可变对象大小的内存池还要复杂的多,也没有很通用的解决方案。
@jk
不错,我一直用自己写的。
看来我落伍了,抓紧去学一下
@陈梓瀚(vczh)
不错, Boost的Shared_ptr功能更强大,但是很多公司不让用。
共4页: 1 2 3 4