http://blog.csdn.net/downmoon/archive/2009/01/16/3796026.aspx http://blog.csdn.net/downmoon/archive/2009/01/16/3796652.aspx