2008年6月20日

我的 WinClock 项目系列之四 (Memento 模式的应用)

摘要: 动机 (Motivation) 在软件的构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前某个点 时的状态,如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。 如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。 阅读全文

posted @ 2008-06-20 11:40 优哉@游哉 阅读(2425) 评论(2) 推荐(1) 编辑

2008年6月4日

我的 WinClock 项目系列之三 (Mediator模式的应用)

摘要: 动机(Motivation): 在软件的构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种 复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 在这种情况下,我们可以使用一个“中介对象”来管理对象间的关联关系,避免相互的对象之间 紧耦合引用关系,从而更好地抵御变化。 阅读全文

posted @ 2008-06-04 18:25 优哉@游哉 阅读(2565) 评论(8) 推荐(1) 编辑

2008年6月1日

我的 WinClock 项目系列之二 (功能细节,在Windows API 里面查找需要的功能)

摘要: 1. 不规则窗口的创建 方法一: 让图片的背景色与显示部分的颜色明显不同,将 FormBorderStyle 属性设置为 None。 将窗体的 BackgroundImage 属性设置为先前创建的位图文件。 设置窗体的 BackColor 图片 背景色,在窗体的构造函数里添加 this.TransparencyKey = this.BackColor; 一切OK。 阅读全文

posted @ 2008-06-01 23:47 优哉@游哉 阅读(3873) 评论(6) 推荐(1) 编辑

2008年5月30日

我的 WinClock 项目系列之一 (概述)

摘要: 三年前,当我还是一个学生的时候,同学在用一个类似雪狐迷你钟 的小软件,具体叫什么现在忘记了,当时这个软件是收费的... 阅读全文

posted @ 2008-05-30 18:35 优哉@游哉 阅读(3062) 评论(25) 推荐(1) 编辑

2008年5月19日

C# 实现屏幕键盘 (ScreenKeyboard)

摘要: 钩子(Hook)是Windows提供的一种消息处理机制平台,是指在程序正常运行中接受信息之前预先 启动的函数,用来检查和修改传给该程序的信息,(钩子)实际上是一个处理消息的程序段,通 过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获 该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不 作处理而继续传递该消息,还可以强制结束消息的传递。注意:安装钩子函数将会影响系统的性 能。监测“系统范围事件”的系统钩子特别明显。因为系统在处理所有的相关事件时都将调用您的 钩子函数,这样您的系统将会明显的减慢。所以应谨慎使用,用完后立即卸载。还有,由于您可 以预先截获其它进程的消息,所以一旦您的钩子函数出了问题的话必将影响其它的进程。 阅读全文

posted @ 2008-05-19 17:35 优哉@游哉 阅读(28293) 评论(91) 推荐(5) 编辑

2008年5月6日

C# 实现自定义消息处理

摘要: 众所周知,委托和事件机制是C#应用程序的一个很重要的方面。 Microsoft 的 BCL 类库对Windows的控件进行了几乎全面的封装,使用程序人员甚至不用了解消息循环就 能写出相样的程序。 然而,甚至Windows UI编程到了 WPF 时代,消息机制仍然占据着举足轻重的作用。 阅读全文

posted @ 2008-05-06 21:19 优哉@游哉 阅读(6589) 评论(2) 推荐(0) 编辑

2008年4月26日

一次重构 (算术表达式求值问题)

摘要: 三个月之前,我曾经写了一篇关于算术表达式求值的文章,当时是单纯从算法的角度考虑整个问题的,而没有考虑到软件的扩展性, 三个月以后,我重新考虑了这个问题,怎么让这个微型的程序具备扩展性呢?空闲时间看了不少 SharpDevelop 的源码,对其中的 插件实现机制当然会有一定印象,那么何不用插件的形式来实现下这个程序呢?这样就可以在将来需要新的运算法则时方便地扩展,而 不必更改已经存在的程序, 阅读全文

posted @ 2008-04-26 20:50 优哉@游哉 阅读(559) 评论(0) 推荐(0) 编辑

2008年1月7日

使用传统算法进行表达式求值(数字支持科学表示法,操作符支持加减乘除乘方, 支持括号, 不支持函数)

摘要: 一. 预处理中缀表达式,去除所有的空格,如果第一个字符是 “-”,在前面加 “0”。 如果 "^" 后紧跟负数-m (m 0),则把这个数替换成 "(0-m)"。 例如: "-3^-20 + 30" 处理 结果为 "0-3^(0-20)+30"。 阅读全文

posted @ 2008-01-07 22:57 优哉@游哉 阅读(2639) 评论(3) 推荐(0) 编辑

2008年1月5日

利用 C++ Interop 封装 ISO C++ 对象, 供其他 .Net 语言使用

摘要: .Net BCL 支持两种互操作技术, 模块级重用P/Invoke 和组件级重用 COM 互操作 C++/CLI除了支持以上两种互操作以外, 更支持代码级重用, 称为C++ Interop, 本文仅举例 说明这种互操作技术。 阅读全文

posted @ 2008-01-05 23:42 优哉@游哉 阅读(931) 评论(0) 推荐(0) 编辑

2007年12月28日

值类型 VS 引用类型 (C++/CLI)

摘要: 值类型自动继承自 System::ValueType, 引用类型自动继承自 System::Object, 虽然 System::ValueType 也继承自 System::Object, 但二者仍有不少差别。 阅读全文

posted @ 2007-12-28 10:51 优哉@游哉 阅读(1212) 评论(1) 推荐(0) 编辑

导航