Помогите пожалуйста, как закрасить отмеченную область (ну например битмапом из ресурса). У меня свои CPropertySheet и CTabCtrl классы, но OnPaint, OnNcPaint, EraseBkgnd делают не то что я бы хотел... Или мне все же придется писать полностью ownerdraw? Буду рад любым откликам.
Здравствуйте dennisV, Вы писали:
V>Помогите пожалуйста, как закрасить отмеченную область (ну например битмапом из ресурса). У меня свои CPropertySheet и CTabCtrl классы, но OnPaint, OnNcPaint, EraseBkgnd делают не то что я бы хотел... Или мне все же придется писать полностью ownerdraw? Буду рад любым откликам.
V>
А так? (у меня получилось)
BOOL CMyTabCtrl::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
BOOL res=CTabCtrl::OnEraseBkgnd(pDC);
RECT r;
GetClientRect(&r);
CBrush br(RGB(0, 255, 0));
RECT ri;
GetItemRect(GetItemCount()-1, &ri);
ri.top=r.top;
ri.left=ri.right;
ri.right=r.right;
pDC->FillRect(&ri, &br);
int mode=pDC->SetBkMode(TRANSPARENT);
pDC->DrawText("Hello", &ri, DT_CENTER);
pDC->SetBkMode(mode);
return res;
}
Здравствуйте VVV, Вы писали:
Да, такой вариант я уже пробовал, но он не закрашивает один-два пикселя над табами (один их них приподнят как активный, а остальные ниже на один-два пикселя).
VVV>Здравствуйте dennisV, Вы писали:
V>>Помогите пожалуйста, как закрасить отмеченную область (ну например битмапом из ресурса). У меня свои CPropertySheet и CTabCtrl классы, но OnPaint, OnNcPaint, EraseBkgnd делают не то что я бы хотел... Или мне все же придется писать полностью ownerdraw? Буду рад любым откликам.
V>>
VVV>А так? (у меня получилось)
VVV>VVV>BOOL CMyTabCtrl::OnEraseBkgnd(CDC* pDC)
VVV>{
VVV> // TODO: Add your message handler code here and/or call default
VVV>
VVV> BOOL res=CTabCtrl::OnEraseBkgnd(pDC);
VVV>
VVV> RECT r;
VVV> GetClientRect(&r);
VVV> CBrush br(RGB(0, 255, 0));
VVV> RECT ri;
VVV> GetItemRect(GetItemCount()-1, &ri);
VVV> ri.top=r.top;
VVV> ri.left=ri.right;
VVV> ri.right=r.right;
VVV> pDC->FillRect(&ri, &br);
VVV> int mode=pDC->SetBkMode(TRANSPARENT);
VVV> pDC->DrawText("Hello", &ri, DT_CENTER);
VVV> pDC->SetBkMode(mode);
VVV> return res;
VVV>}
VVV>
Здравствуйте Александр Коуров, Вы писали:
АК>Попробуй установить кисть через SetClassLong
Да, такой вариант тоже работает, но тоже неправильно — почему-то закрашиваюся дополнительные области (прямо под табом, но над property sheet, и по бокам и внизу property sheet.) Есть ли какие-нибудь идеи по этому поводу?