SkinLib的代碼簡單明了,對于想學(xué)習(xí)和了解UI Skin的原理來說是合適的. 相關(guān)鏈接如下
http://www.shnenglu.com/netboy/archive/2009/02/15/73863.html
CSkinDialog 使用Hook,WndProc技術(shù),重載原有繪制消息過程.
CSkinDialog的區(qū)域分為客戶區(qū)域和非客戶區(qū)域,CSkinDialog的非客戶區(qū)域又被分為如下幾個子區(qū)域,
1.左邊緣,m_nToLeft為窗口的左邊緣長度.
2.右邊緣,m_nToRight為右邊緣的長度.
3.Caption區(qū)域,m_nToTop 為其高度,Caption 區(qū)域又可以分為
3.1.(0,0,m_nTopLeft,m_nToTop)
3.2.標(biāo)題區(qū)域 (m_nTopLeft,0,rcWnd.Width()-m_nTopRight,m_nToTop)
3.3.close,max,min 按鈕區(qū)域
4.下部邊緣,m_nToBottom為下部邊緣的高度
根據(jù)配置文件,讀取到相應(yīng)的Skin,繪制上述Dialog幾個子區(qū)域.
1.DrawBorder繪制左,右,下部邊緣.
2.DrawCaption繪制Caption區(qū)域.