vc++2008 mfc 制作控件
我想制作一个button共同.比如说形状设定,大小等等。制作好的按钮在别的画面调用使用。按钮的显示文字根据每个画面需要显示。这样是不时就需要传来参数。保存按钮的文字阿?我...
我想制作一个button 共同 . 比如说形状设定,大小等等。 制作好的按钮在别的画面调用使用。 按钮的显示文字根据每个画面需要显示。 这样是不时就需要传来参数。 保存按钮的文字阿?
我vc 2008 没有使用过。 不知道在哪里怎么写。 哪位高手提供代码。。
我需要制作很多控件的共同提供给他人使用。 帮我做一个button .. 做个参照。。 谢谢 展开
我vc 2008 没有使用过。 不知道在哪里怎么写。 哪位高手提供代码。。
我需要制作很多控件的共同提供给他人使用。 帮我做一个button .. 做个参照。。 谢谢 展开
2个回答
展开全部
从CButton派生一个类CMyButton,然后重写DrawItem等方法~
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
UINT uStyle = DFCS_BUTTONPUSH;
// This code only works with buttons.
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
// If drawing selected, add the pushed style to DrawFrameControl.
if (lpDrawItemStruct->itemState & ODS_SELECTED)
uStyle |= DFCS_PUSHED;
// Draw the button frame.
::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
DFC_BUTTON, uStyle);
// Get the button's text.
CString strText;
GetWindowText(strText);
// Draw the button text using the text color red.
COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255,0,0));
::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}
使用方法:
CMyButton myButton;
myButton.Create(_T("My button"),
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
CRect(10,10,100,30), pParentWnd, 1);
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
UINT uStyle = DFCS_BUTTONPUSH;
// This code only works with buttons.
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
// If drawing selected, add the pushed style to DrawFrameControl.
if (lpDrawItemStruct->itemState & ODS_SELECTED)
uStyle |= DFCS_PUSHED;
// Draw the button frame.
::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
DFC_BUTTON, uStyle);
// Get the button's text.
CString strText;
GetWindowText(strText);
// Draw the button text using the text color red.
COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255,0,0));
::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}
使用方法:
CMyButton myButton;
myButton.Create(_T("My button"),
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
CRect(10,10,100,30), pParentWnd, 1);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询