被迫写一个类似qq登陆框上面的那个下拉框控件

蓝色边框,选择时是深蓝色边框,下拉按钮可以自定义图片,不过只能是 15*16的BMP

 

被迫写一个类似qq登陆框上面的那个下拉框控件 class  CMyComboBox :  public  CComboBox
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件
// Construction
被迫写一个类似qq登陆框上面的那个下拉框控件
public:
被迫写一个类似qq登陆框上面的那个下拉框控件    CMyComboBox();
被迫写一个类似qq登陆框上面的那个下拉框控件    
// normal_id 普通状态图片的ID
被迫写一个类似qq登陆框上面的那个下拉框控件    
// hover_id  hover状态图片的ID
被迫写一个类似qq登陆框上面的那个下拉框控件    
// push_id   push状态图片的ID
被迫写一个类似qq登陆框上面的那个下拉框控件
    CMyComboBox(unsigned int normal_id,unsigned int hover_id,unsigned int push_id);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
// Attributes
被迫写一个类似qq登陆框上面的那个下拉框控件
public:
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
// Operations
被迫写一个类似qq登陆框上面的那个下拉框控件
public:
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
// OverridesClassWizard
被迫写一个类似qq登陆框上面的那个下拉框控件    
//  generated virtual function overrides
被迫写一个类似qq登陆框上面的那个下拉框控件    
//{{AFX_VIRTUAL(CMyComboBox)
被迫写一个类似qq登陆框上面的那个下拉框控件
    protected:
被迫写一个类似qq登陆框上面的那个下拉框控件    
virtual void PreSubclassWindow();
被迫写一个类似qq登陆框上面的那个下拉框控件    
//}}AFX_VIRTUAL
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
// Implementation
被迫写一个类似qq登陆框上面的那个下拉框控件
public:
被迫写一个类似qq登陆框上面的那个下拉框控件    
virtual ~CMyComboBox();
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
// Generated message map functions
被迫写一个类似qq登陆框上面的那个下拉框控件
protected:
被迫写一个类似qq登陆框上面的那个下拉框控件    
//{{AFX_MSG(CMyComboBox)
被迫写一个类似qq登陆框上面的那个下拉框控件
    afx_msg void OnPaint();
被迫写一个类似qq登陆框上面的那个下拉框控件    afx_msg 
void OnMouseMove(UINT nFlags, CPoint point);
被迫写一个类似qq登陆框上面的那个下拉框控件    afx_msg 
void OnTimer(UINT nIDEvent);
被迫写一个类似qq登陆框上面的那个下拉框控件    afx_msg 
void OnLButtonDown(UINT nFlags, CPoint point);
被迫写一个类似qq登陆框上面的那个下拉框控件    afx_msg 
void OnLButtonUp(UINT nFlags, CPoint point);
被迫写一个类似qq登陆框上面的那个下拉框控件    
//}}AFX_MSG
被迫写一个类似qq登陆框上面的那个下拉框控件

被迫写一个类似qq登陆框上面的那个下拉框控件    DECLARE_MESSAGE_MAP()
被迫写一个类似qq登陆框上面的那个下拉框控件
private:
被迫写一个类似qq登陆框上面的那个下拉框控件    
void DrawButton(CDC* pDC);
被迫写一个类似qq登陆框上面的那个下拉框控件
private:
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    unsigned 
int m_normal_id;
被迫写一个类似qq登陆框上面的那个下拉框控件    unsigned 
int m_hover_id;
被迫写一个类似qq登陆框上面的那个下拉框控件    unsigned 
int m_push_id;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
//0-normal 1-hover 2-push
被迫写一个类似qq登陆框上面的那个下拉框控件
    int  m_button_state;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
bool m_active;
被迫写一个类似qq登陆框上面的那个下拉框控件    
bool m_draw;
被迫写一个类似qq登陆框上面的那个下拉框控件}
;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
#define  BUTTON_STATE_NORMAL 0
被迫写一个类似qq登陆框上面的那个下拉框控件
#define  BUTTON_STATE_HOVER    (1<<1)
被迫写一个类似qq登陆框上面的那个下拉框控件
#define  BUTTON_STATE_PUSH    (1<<2)
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
/////////////////////////////////////////////////////////////////////////////
被迫写一个类似qq登陆框上面的那个下拉框控件 //  CMyComboBox
被迫写一个类似qq登陆框上面的那个下拉框控件

被迫写一个类似qq登陆框上面的那个下拉框控件CMyComboBox::CMyComboBox():m_active(
false ),
被迫写一个类似qq登陆框上面的那个下拉框控件                           m_normal_id(
0 ),
被迫写一个类似qq登陆框上面的那个下拉框控件                           m_hover_id(
0 ),
被迫写一个类似qq登陆框上面的那个下拉框控件                           m_push_id(
0 ),
被迫写一个类似qq登陆框上面的那个下拉框控件                           m_button_state(BUTTON_STATE_NORMAL)
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件CMyComboBox::CMyComboBox(unsigned 
int  normal_id,
被迫写一个类似qq登陆框上面的那个下拉框控件                         unsigned 
int  hover_id,
被迫写一个类似qq登陆框上面的那个下拉框控件                         unsigned 
int  push_id):
被迫写一个类似qq登陆框上面的那个下拉框控件                            m_active(
false ),
被迫写一个类似qq登陆框上面的那个下拉框控件                            m_normal_id(normal_id),
被迫写一个类似qq登陆框上面的那个下拉框控件                            m_hover_id(hover_id),
被迫写一个类似qq登陆框上面的那个下拉框控件                            m_push_id(push_id),
被迫写一个类似qq登陆框上面的那个下拉框控件                            m_button_state(BUTTON_STATE_NORMAL)
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件CMyComboBox::
~ CMyComboBox()
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
被迫写一个类似qq登陆框上面的那个下拉框控件    
// {{AFX_MSG_MAP(CMyComboBox)
被迫写一个类似qq登陆框上面的那个下拉框控件
    ON_WM_PAINT()
被迫写一个类似qq登陆框上面的那个下拉框控件    ON_WM_MOUSEMOVE()
被迫写一个类似qq登陆框上面的那个下拉框控件    ON_WM_TIMER()
被迫写一个类似qq登陆框上面的那个下拉框控件    ON_WM_LBUTTONDOWN()
被迫写一个类似qq登陆框上面的那个下拉框控件    ON_WM_LBUTTONUP()
被迫写一个类似qq登陆框上面的那个下拉框控件    
// }}AFX_MSG_MAP
被迫写一个类似qq登陆框上面的那个下拉框控件
END_MESSAGE_MAP()
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
/////////////////////////////////////////////////////////////////////////////
被迫写一个类似qq登陆框上面的那个下拉框控件 //  CMyComboBox message handlers
被迫写一个类似qq登陆框上面的那个下拉框控件

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void  CMyComboBox::PreSubclassWindow() 
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    CRect rc;
被迫写一个类似qq登陆框上面的那个下拉框控件    GetWindowRect(
&rc);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    rc.left 
-= 2;
被迫写一个类似qq登陆框上面的那个下拉框控件    rc.top 
-= 15;
被迫写一个类似qq登陆框上面的那个下拉框控件    rc.bottom 
-= 23;
被迫写一个类似qq登陆框上面的那个下拉框控件    rc.right 
-= 8;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    MoveWindow(
&rc);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    ModifyStyle(
0,BS_OWNERDRAW);
被迫写一个类似qq登陆框上面的那个下拉框控件    CComboBox::PreSubclassWindow();
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void
被迫写一个类似qq登陆框上面的那个下拉框控件CMyComboBox::OnPaint()
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    CRect    rc;
被迫写一个类似qq登陆框上面的那个下拉框控件    CDC
*    pDC;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    Default();
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
被迫写一个类似qq登陆框上面的那个下拉框控件    pDC 
= GetDC();
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    GetClientRect(rc);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
if(m_active)
被迫写一个类似qq登陆框上面的那个下拉框控件        pDC
->Draw3dRect(rc, RGB(78,108,133), RGB(78,108,133));
被迫写一个类似qq登陆框上面的那个下拉框控件    
else
被迫写一个类似qq登陆框上面的那个下拉框控件        pDC
->Draw3dRect(rc, RGB(126,157,185), RGB(126,157,185));
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
//填充掉阴影
被迫写一个类似qq登陆框上面的那个下拉框控件
    rc.DeflateRect(1,1);
被迫写一个类似qq登陆框上面的那个下拉框控件    pDC
->Draw3dRect(rc, RGB(255,255,255), RGB(255,255,255));
被迫写一个类似qq登陆框上面的那个下拉框控件    
//填充掉原来的按钮
被迫写一个类似qq登陆框上面的那个下拉框控件
    rc.left += (rc.Width() - 18);
被迫写一个类似qq登陆框上面的那个下拉框控件    rc.DeflateRect(
1,1);
被迫写一个类似qq登陆框上面的那个下拉框控件    pDC
->Draw3dRect(rc, RGB(255,255,255), RGB(255,255,255));
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    DrawButton(pDC);
被迫写一个类似qq登陆框上面的那个下拉框控件    ReleaseDC(pDC);
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void  CMyComboBox::OnMouseMove(UINT nFlags, CPoint point) 
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    m_draw 
= true;
被迫写一个类似qq登陆框上面的那个下拉框控件    SetTimer(
1,10,NULL);
被迫写一个类似qq登陆框上面的那个下拉框控件    OnTimer(
1);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    CComboBox::OnMouseMove(nFlags, point);
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void  
被迫写一个类似qq登陆框上面的那个下拉框控件CMyComboBox::OnTimer(UINT nIDEvent) 
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    POINT pt;
被迫写一个类似qq登陆框上面的那个下拉框控件    CRect rc,rc_button;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    GetCursorPos(
&pt);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    GetWindowRect(
&rc);
被迫写一个类似qq登陆框上面的那个下拉框控件    
被迫写一个类似qq登陆框上面的那个下拉框控件    rc_button 
= rc;
被迫写一个类似qq登陆框上面的那个下拉框控件    rc_button.left 
+= rc_button.Width() - 17;
被迫写一个类似qq登陆框上面的那个下拉框控件    
被迫写一个类似qq登陆框上面的那个下拉框控件    
if(rc_button.PtInRect(pt))
被迫写一个类似qq登陆框上面的那个下拉框控件    
{
被迫写一个类似qq登陆框上面的那个下拉框控件        
if(m_button_state != BUTTON_STATE_PUSH)
被迫写一个类似qq登陆框上面的那个下拉框控件            m_button_state 
= BUTTON_STATE_HOVER;
被迫写一个类似qq登陆框上面的那个下拉框控件    }

被迫写一个类似qq登陆框上面的那个下拉框控件    
else
被迫写一个类似qq登陆框上面的那个下拉框控件        m_button_state 
= BUTTON_STATE_NORMAL;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
if(rc.PtInRect(pt))
被迫写一个类似qq登陆框上面的那个下拉框控件    
{
被迫写一个类似qq登陆框上面的那个下拉框控件        m_active 
= true;
被迫写一个类似qq登陆框上面的那个下拉框控件        
if(m_draw)
被迫写一个类似qq登陆框上面的那个下拉框控件        
{
被迫写一个类似qq登陆框上面的那个下拉框控件            m_draw 
= false;
被迫写一个类似qq登陆框上面的那个下拉框控件            Invalidate();
被迫写一个类似qq登陆框上面的那个下拉框控件        }

被迫写一个类似qq登陆框上面的那个下拉框控件    }

被迫写一个类似qq登陆框上面的那个下拉框控件    
else
被迫写一个类似qq登陆框上面的那个下拉框控件    
{
被迫写一个类似qq登陆框上面的那个下拉框控件        KillTimer (
1);
被迫写一个类似qq登陆框上面的那个下拉框控件        m_active       
= false;
被迫写一个类似qq登陆框上面的那个下拉框控件        m_button_state 
= 0;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件        Invalidate();
被迫写一个类似qq登陆框上面的那个下拉框控件    }

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    CComboBox::OnTimer(nIDEvent);
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void  
被迫写一个类似qq登陆框上面的那个下拉框控件CMyComboBox::DrawButton(CDC
*  pDC)
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    
if(m_normal_id == 0 || m_hover_id ==0 || m_push_id == 0)
被迫写一个类似qq登陆框上面的那个下拉框控件        
return;
被迫写一个类似qq登陆框上面的那个下拉框控件    CDC            MemDC;
被迫写一个类似qq登陆框上面的那个下拉框控件    CBitmap        bitmap;
被迫写一个类似qq登陆框上面的那个下拉框控件    CRect        rc;
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    GetWindowRect(
&rc);
被迫写一个类似qq登陆框上面的那个下拉框控件    
被迫写一个类似qq登陆框上面的那个下拉框控件    MemDC.CreateCompatibleDC(pDC);
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    
if( m_button_state == BUTTON_STATE_NORMAL )
被迫写一个类似qq登陆框上面的那个下拉框控件    
{
被迫写一个类似qq登陆框上面的那个下拉框控件        bitmap.LoadBitmap(m_normal_id);
被迫写一个类似qq登陆框上面的那个下拉框控件    }

被迫写一个类似qq登陆框上面的那个下拉框控件    
else if( m_button_state == BUTTON_STATE_HOVER )
被迫写一个类似qq登陆框上面的那个下拉框控件    
{
被迫写一个类似qq登陆框上面的那个下拉框控件        bitmap.LoadBitmap(m_hover_id);
被迫写一个类似qq登陆框上面的那个下拉框控件    }

被迫写一个类似qq登陆框上面的那个下拉框控件    
else
被迫写一个类似qq登陆框上面的那个下拉框控件    
{
被迫写一个类似qq登陆框上面的那个下拉框控件        bitmap.LoadBitmap(m_push_id);
被迫写一个类似qq登陆框上面的那个下拉框控件    }

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件    MemDC.SelectObject(
&bitmap);
被迫写一个类似qq登陆框上面的那个下拉框控件    pDC
->BitBlt(rc.Width()-17,3,15,16,&MemDC,0,0,SRCCOPY);
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void  CMyComboBox::OnLButtonDown(UINT nFlags, CPoint point) 
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    m_button_state 
= BUTTON_STATE_PUSH;
被迫写一个类似qq登陆框上面的那个下拉框控件    Invalidate();
被迫写一个类似qq登陆框上面的那个下拉框控件    CComboBox::OnLButtonDown(nFlags, point);
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
被迫写一个类似qq登陆框上面的那个下拉框控件
void  CMyComboBox::OnLButtonUp(UINT nFlags, CPoint point) 
被迫写一个类似qq登陆框上面的那个下拉框控件
{
被迫写一个类似qq登陆框上面的那个下拉框控件    m_button_state 
= BUTTON_STATE_HOVER;
被迫写一个类似qq登陆框上面的那个下拉框控件    Invalidate();
被迫写一个类似qq登陆框上面的那个下拉框控件    CComboBox::OnLButtonUp(nFlags, point);
被迫写一个类似qq登陆框上面的那个下拉框控件}

被迫写一个类似qq登陆框上面的那个下拉框控件
 

你可能感兴趣的:(下拉框)