http://blog.csdn.net/gbc9566/archive/2010/08/26/5839570.aspx http://blog.csdn.net/ameyume/archive/2010/12/29/6104244.aspx