void CMyComboBox::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
// draw borders
dc.Draw3dRect(rect,
::GetSysColor(COLOR_3DSHADOW),
::GetSysColor(COLOR_BTNHIGHLIGHT));
rect.DeflateRect(1,1);
dc.Draw3dRect(rect,
::GetSysColor(COLOR_3DDKSHADOW),
::GetSysColor(COLOR_BTNFACE));
rect.DeflateRect(1,1);
if( (GetStyle() & 0x0000000f) > CBS_SIMPLE)
{
CRect rectBtn=rect;
rectBtn.left = rectBtn.right - ::GetSystemMetrics(SM_CXHTHUMB);
BOOL bPressed=FALSE;
if(GetKeyState(VK_LBUTTON) <>
{
CPoint point;
::GetCursorPos(&point);
ScreenToClient(&point);
if(rectBtn.PtInRect(point))
{
bPressed=TRUE;
}
}
// draw button
UINT uState = DFCS_SCROLLDOWN;
uState |= (bPressed ? DFCS_FLAT | DFCS_PUSHED : 0);
dc.DrawFrameControl(rectBtn, DFC_SCROLL, uState );
rect.right=rectBtn.left;
}
if((GetStyle()&0x0000000f)==CBS_DROPDOWNLIST)
{
CString sText;
GetWindowText(sText);
if(sText.IsEmpty())
{
dc.FillSolidRect(rect, ::GetSysColor(COLOR_WINDOW));
}
}
else
{
// draw border around edit control
dc.Draw3dRect(rect,
::GetSysColor(COLOR_BTNHIGHLIGHT),
::GetSysColor(COLOR_BTNHIGHLIGHT));
}
