SkinLib的代碼簡單明了,對于想學習和了解UI Skin的原理來說是合適的. 相關鏈接如下
http://www.shnenglu.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區域.