DrawFrameControl 绘制控件

DrawFrameControl 绘制控件

DrawFrameControl 的效果:
RECT rect;
    rect.top = 0;
    rect.left = 0;
    rect.bottom = 40;    
    rect.right = 40;
    pDC->DrawFrameControl(&rect, DFC_CAPTION, DFCS_CAPTIONCLOSE);
    rect.left = 50;
    rect.right = 90;
    pDC->DrawFrameControl(&rect, DFC_CAPTION, DFCS_CAPTIONMIN);
    rect.left = 100;
    rect.right = 140;
    pDC->DrawFrameControl(&rect, DFC_CAPTION, DFCS_CAPTIONMAX);
    rect.left = 150;
    rect.right = 190;
    pDC->DrawFrameControl(&rect, DFC_CAPTION, DFCS_CAPTIONRESTORE);
    rect.left = 200;
    rect.right = 240;
    pDC->DrawFrameControl(&rect, DFC_CAPTION, DFCS_CAPTIONHELP);
 // TODO: Menu bar
    rect.left = 250;   
    rect.right = 290;
    pDC->DrawFrameControl(&rect, DFC_MENU, DFCS_MENUARROW);
    rect.left = 300;
    rect.right = 340;
    pDC->DrawFrameControl(&rect, DFC_MENU, DFCS_MENUCHECK);
    rect.left = 350;
    rect.right = 390;
    pDC->DrawFrameControl(&rect, DFC_MENU, DFCS_MENUBULLET);
    rect.left = 400;
    rect.right = 440;
    pDC->DrawFrameControl(&rect, DFC_MENU, DFCS_MENUARROWRIGHT);
 // TODO: Scroll bar
    rect.top = 50;
    rect.left = 0;
    rect.bottom = 90;    
    rect.right = 40;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLUP);
    rect.left = 50;
    rect.right = 90;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLDOWN);
    rect.left = 100;
    rect.right = 140;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLLEFT);
    rect.left = 150;
    rect.right = 190;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLRIGHT);
    rect.left = 200;
    rect.right = 240;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLCOMBOBOX);
    rect.left = 250;
    rect.right = 290;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
    rect.left = 300;
    rect.right = 340;
    pDC->DrawFrameControl(&rect, DFC_SCROLL, DFCS_SCROLLSIZEGRIPRIGHT);
 // TODO: Standard button
    rect.top = 100;
    rect.left = 0;
    rect.bottom = 140;    
    rect.right = 40;
    pDC->DrawFrameControl(&rect, DFC_BUTTON, DFCS_BUTTONCHECK);
    rect.left = 50;
    rect.right = 90;
    pDC->DrawFrameControl(&rect, DFC_BUTTON, DFCS_BUTTONRADIOIMAGE);
    rect.left = 100;
    rect.right = 140;
    pDC->DrawFrameControl(&rect, DFC_BUTTON, DFCS_BUTTONRADIOMASK);
    rect.left = 150;
    rect.right = 190;
    pDC->DrawFrameControl(&rect, DFC_BUTTON, DFCS_BUTTONRADIO);
    rect.left = 200;
    rect.right = 240;
    pDC->DrawFrameControl(&rect, DFC_BUTTON, DFCS_BUTTON3STATE);
    rect.left = 250;
    rect.right = 290;
    pDC->DrawFrameControl(&rect, DFC_BUTTON, DFCS_BUTTONPUSH);

使用DrawFrameControl 定制自己的check按钮
void CMyCheckButton::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 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 (100,_T("宋体"));
 CFont   *pOldFont=(CFont   *)dc.SelectObject(&myFont);
 dc.SetBkMode(TRANSPARENT);  

 CString StrWndText;
 GetWindowText(StrWndText);

 rect.OffsetRect (20,0);
 dc.SetTextColor(RGB(0,0,0));
 dc.DrawText(StrWndText,   rect,   DT_LEFT|DT_VCENTER|DT_SINGLELINE);
 dc.SelectObject   (pOldFont); 
 myFont.DeleteObject   (); 
}

你可能感兴趣的:(DrawFrameControl 绘制控件)