Здравствуйте JC, Вы писали:
JC>Как нарисовать прямоугольник на кнопке?
В НУЖНОМ МЕСТЕ получить CDC кнопки и рисовать...
Есть ли это место и/или как это делается пока не знаю, может кто другой поможет.
JC> — Если только OwnerDraw, то ещё несколько вопросов:
если без него никак, то:
JC> — Как присвоить функцию событию OnPaint(или другой)
1. Если кнопка лежит на диалоге и ей выставлено свойство Owner Draw, то в диалоге:
void CTestDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDIS)
{
// TODO: Add your message handler code here and/or call default
if (nIDCtl == IDC_BT_TEST) // IDC_BT_TEST - идентификатор кнопки
{
::FrameRect(lpDIS->hDC, lpDIS->rcItem, (HBRUSH)::GetStockObject(BLACK_BRUSH));
}
CDialog::OnDrawItem(nIDCtl, lpDIS);
}
2. В случае собственного класса кнопки и динамического создания:
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
::FrameRect(lpDIS->hDC, lpDIS->rcItem, (HBRUSH)::GetStockObject(BLACK_BRUSH));
}
Так же, если необходимо, придется рисовать самому и Focus Rect, и состояние нажатия...
тут поможет:
lpDIS->itemState;
Для рисования объема:
Draw3dRect(...);
Если нужен будет код, то обращайтесь.
JC> — Как узнать системные цвета(BtnFace,BtnLight,BtnShadow и др.)
Функция:
DWORD GetSysColor(
int nIndex // display element
);
где nIndex:
COLOR_BTNFACE
COLOR_BTNHILIGHT
COLOR_BTNHIGHLIGHT
COLOR_BTNSHADOW
и. т.д.