1.先准备列表用的xml
<listitem height="68">
<dlg pos="0,0,-0,-0" crbg="FFFFFF">
<memframeimage id="6401" pos="2,2,60,37" skin="panel"></memframeimage>
<memframeimage id="6402" pos="63,2,121,37" skin="panel" ></memframeimage>
<memframeimage id="6403" pos="125,2,182,37" skin="panel"></memframeimage>
</dlg>
</listitem>
2.定制memframeimage 相关类。
class CBkMemoryFrameImage : public CBkMemoryImage
{
BKOBJ_DECLARE_CLASS_NAME(CBkMemoryFrameImage, "memframeimage")
CBkMemoryFrameImage()
:m_nSubImageID(-1)
,m_nShowFrame(0)
{
}
public:
// Do nothing
void OnPaint(CDCHandle dc)
{
__super::OnPaint(dc);
if (m_pSkin && m_nShowFrame == 1)
{
CRect rc;
HBRUSH hBrush = CreateSolidBrush(RGB(0,228,255));
FrameRect(dc,m_rcWindow,hBrush);
}
}
protected:
BKWIN_BEGIN_MSG_MAP()
MSG_WM_PAINT(OnPaint)
BKWIN_END_MSG_MAP()
BKWIN_DECLARE_ATTRIBUTES_BEGIN()
BKWIN_SKIN_ATTRIBUTE("skin", m_pSkin, TRUE)
BKWIN_INT_ATTRIBUTE("sub", m_nSubImageID, FALSE)
BKWIN_INT_ATTRIBUTE("showframe", m_nShowFrame, FALSE)
BKWIN_DECLARE_ATTRIBUTES_END()
protected:
int m_nSubImageID;
int m_nShowFrame;
CBkSkinBase *m_pSkin;//用来画边框
};