SkinLib的代码简单明了,对于想学习和了解UI Skin的原理来说是合适的. 相关链接如下
http://www.cppblog.com/netboy/archive/2009/02/15/73863.html
CSkinDialog 使用Hook,WndProc技术,重载原有绘制消息过程.
CSkinDialog的区域分为客户区域和非客户区域,CSkinDialog的非客户区域又被分为如下几个子区域,
1.左边缘,m_nToLeft为窗口的左边缘长度.
2.右边缘,m_nToRight为右边缘的长度.
3.Caption区域,m_nToTop 为其高度,Caption 区域又可以分为
3.1.(0,0,m_nTopLeft,m_nToTop)
3.2.标题区域 (m_nTopLeft,0,rcWnd.Width()-m_nTopRight,m_nToTop)
3.3.close,max,min 按钮区域
4.下部边缘,m_nToBottom为下部边缘的高度
根据配置文件,读取到相应的Skin,绘制上述Dialog几个子区域.
1.DrawBorder绘制左,右,下部边缘.
2.DrawCaption绘制Caption区域.