...
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);
afx_msg void OnBnClicked();
...
Как создать круглую кнопку
Помогите, как создать круглую кнопку
Цитата: jiji
Помогите, как создать круглую кнопку
Сделать свой класс кнопки.Добавить в хедер-файле
Код:
В сpp. файле дописать:
Код:
...
void MButton::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CButton::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
void MButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CBrush brush;
if(lpDrawItemStruct->itemState & ODS_DISABLED){
brush.CreateSolidBrush(RGB(192,192,192));
}else{ brush.CreateSolidBrush(RGB(230,230,230));}
pDC->SelectObject(&brush);
CRect r = lpDrawItemStruct->rcItem;
if(lpDrawItemStruct->itemState & ODS_SELECTED){
r.OffsetRect(2,2);
}
pDC->SetBkMode(TRANSPARENT);
pDC->Ellipse(r);
pDC->DrawText(L"Button",(&r),DT_CENTER|DT_SINGLELINE|DT_VCENTER);
}
void MButton::OnBnClicked()
{
MessageBox(L"Вы нажали круглую кнопку");
}
...
void MButton::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CButton::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
void MButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CBrush brush;
if(lpDrawItemStruct->itemState & ODS_DISABLED){
brush.CreateSolidBrush(RGB(192,192,192));
}else{ brush.CreateSolidBrush(RGB(230,230,230));}
pDC->SelectObject(&brush);
CRect r = lpDrawItemStruct->rcItem;
if(lpDrawItemStruct->itemState & ODS_SELECTED){
r.OffsetRect(2,2);
}
pDC->SetBkMode(TRANSPARENT);
pDC->Ellipse(r);
pDC->DrawText(L"Button",(&r),DT_CENTER|DT_SINGLELINE|DT_VCENTER);
}
void MButton::OnBnClicked()
{
MessageBox(L"Вы нажали круглую кнопку");
}
...
Далее вытащить из ToolBox кнопку.придать ей квадратную форму,и добавить ее контрол переменную типа MButton,а не CButton.Не забыть поставить в Properties этой кнопки Owner Draw в true.
И второй вариант посмотреть как это сделано тут.:)
спасибо за инфу получилось !!!
что есть - и добавить ее контрол переменную типа MButton,а не CButton
и....чтобы пользоваться ....CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CBrush brush;
....какую библиотеку или что там еще подключить надо?
Цитата: ucs
что есть
долго догонял. вообще есть теги QUOTE.
Цитата:
- и добавить ее контрол переменную типа MButton,а не CButton
это связывание контрола с переменной. Правым кликом по той самой кнопке в редакторе ресурсов. Тип надо указать не CButton - как это делается обычно в таких случаях, а MButton
Цитата:
и....чтобы пользоваться ....CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CBrush brush;
....какую библиотеку или что там еще подключить надо?
MFC