在类似MSN Messenger的Log in界面上同样需要透明的checkbox ,与透明Static相近,重载OnPain()。
但此处需要自行绘制chebox的小方框,并空出其位置后绘制文字。
DrawFrameControl可绘制小方框,而15像素差不多是个比较好的绘制举行宽度,同理,可在控件左侧开始20个像素处开始绘制文字为佳。
void CTransCheck::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
CRect BoxRect;
BoxRect=rect;
BoxRect.right =BoxRect.left +15;
dc.DrawFrameControl(BoxRect,DFC_BUTTON,DFCS_BUTTONCHECK|GetCheck()?DFCS_CHECKED :0);
CFont myFont;
myFont.CreatePointFont (120,_T("宋体"));
CFont *pOldFont=(CFont *)dc.SelectObject (&myFont);
dc.SetBkMode(TRANSPARENT);
CString StrWndText;
GetWindowText(StrWndText);
rect.OffsetRect (20,0);
dc.DrawText(StrWndText, rect, DT_LEFT|DT_VCENTER|DT_SINGLELINE);
dc.SelectObject (pOldFont);
myFont.DeleteObject ();
// Do not call CButton::OnPaint() for painting messages
}
但此处需要自行绘制chebox的小方框,并空出其位置后绘制文字。
DrawFrameControl可绘制小方框,而15像素差不多是个比较好的绘制举行宽度,同理,可在控件左侧开始20个像素处开始绘制文字为佳。
void CTransCheck::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
CRect BoxRect;
BoxRect=rect;
BoxRect.right =BoxRect.left +15;
dc.DrawFrameControl(BoxRect,DFC_BUTTON,DFCS_BUTTONCHECK|GetCheck()?DFCS_CHECKED :0);
CFont myFont;
myFont.CreatePointFont (120,_T("宋体"));
CFont *pOldFont=(CFont *)dc.SelectObject (&myFont);
dc.SetBkMode(TRANSPARENT);
CString StrWndText;
GetWindowText(StrWndText);
rect.OffsetRect (20,0);
dc.DrawText(StrWndText, rect, DT_LEFT|DT_VCENTER|DT_SINGLELINE);
dc.SelectObject (pOldFont);
myFont.DeleteObject ();
// Do not call CButton::OnPaint() for painting messages
}