CDC类中的DrawFrameControl函数,提供了在DC中绘制按钮的方法,而不必采用动态创建按钮的形式。函数原型如下:
- BOOL DrawFrameControl(
- LPRECT lpRect,
- UINT nType,
- UINT nState );
参数说明:
lpRect :矩形
nType :控件类型
nState :控件状态
对于控件的类型和状体,引用MSDN::前是nType,下面是状态uState
- DFC_BUTTON
- DFCS_BUTTON3STATE Three-state button
- DFCS_BUTTONCHECK Check box
- DFCS_BUTTONPUSH Push button
- DFCS_BUTTONRADIO Radio button
- DFCS_BUTTONRADIOIMAGE Image for radio button; nonsquare needs image
- DFCS_BUTTONRADIOMASK Mask for radio button; nonsquare needs mask
- DFC_CAPTION
- DFCS_CAPTIONCLOSE Close button
- DFCS_CAPTIONHELP Help button
- DFCS_CAPTIONMAX Maximize button
- DFCS_CAPTIONMIN Minimize button
- DFCS_CAPTIONRESTORE Restore button
- DFC_MENU
- DFCS_MENUARROW Submenu arrow
- DFCS_MENUBULLET Bullet
- DFCS_MENUCHECK Check mark
- DFC_SCROLL
- DFCS_SCROLLCOMBOBOX Combo box scroll bar
- DFCS_SCROLLDOWN Down arrow of scroll bar
- DFCS_SCROLLLEFT Left arrow of scroll bar
- DFCS_SCROLLRIGHT Right arrow of scroll bar
- DFCS_SCROLLSIZEGRIP Size grip in the lower right corner of window
- DFCS_SCROLLUP Up arrow of scroll bar
下面给出一个绘制普通按钮的例子:
- void CXXControl::Draw_MyButton(CDC *pDC)
- {
- COLORREF lineColor = RGB(0, 255, 0);
- CRect rect(10, 10, 100, 20);//定义矩形大小
- pDC->DrawFrameControl(rect,DFC_BUTTON,DFCS_BUTTONPUSH);
- rect.OffsetRect(20,0);
- pDC->SetTextColor(lineColor); //字体颜色可更改
- pDC->SetBkMode(TRANSPARENT);
- pDC->DrawText(“可以作为参数动态输入”,rect,DT_LEFT|DT_VCENTER|DT_SINGLELINE);
- }
用此方法绘制出来的Button,与绘制的直线,椭圆等图形有异曲同工之效。便于在视图中使用,比如你可以在支持“层”概念的绘图软件使用此方法。