• CStatic调用DrawItem (偶尔原创)


    class CStaticEx :public CStatic
    {
    public:
    CStaticEx(void);
    ~CStaticEx(void);
    public:
    virtual void PreSubclassWindow();
    virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

    }

    CStaticEx, .cpp

    BEGIN_MESSAGE_MAP(CStaticEx, CStatic)
    //{{AFX_MSG_MAP(CStaticEx)
    ON_WM_MOUSEMOVE()
    //ON_WM_DRAWITEM()                   //如果写了这个消息,DrawItem将不会被调用
    ON_WM_LBUTTONDOWN()
    ON_WM_LBUTTONUP()
            ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
    ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    void CStaticEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
            CDC dc;
       RECT rect;
       dc.Attach(lpDrawItemStruct ->hDC);   //
       rect = lpDrawItemStruct->rcItem;     //Store the Button rect to our local rect.
       //dc.Draw3dRect(&rect,RGB(255,255,255),RGB(0,0,0));
       dc.FillSolidRect(&rect,RGB(100,100,255));//
       UINT state=lpDrawItemStruct->itemState;
       if((state & ODS_SELECTED))
       {
        //dc.FillSolidRect(&rect,RGB(233,100,255));//
        //dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT);

       }
       else
       {
        //dc.FillSolidRect(&rect,RGB(233,100,255));//
        //dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);
       }
       dc.SetBkColor(RGB(100,100,255));   //Setting the Text Background color
            dc.SetTextColor(RGB(255,0,0));     //Setting the Text Color
       dc.SetBkColor(RGB(100,100,255));   //Setting the Text Background color
            dc.SetTextColor(RGB(255,0,0));     //Setting the Text Color

            TCHAR buffer[MAX_PATH];           //To store the Caption of the button.
            ZeroMemory(buffer,MAX_PATH );     //Intializing the buffer to zero
            ::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH); //Get the Caption of Button Window
       
            dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//Redraw the Caption of Button Window
            dc.Detach(); // Detach the Button DC
    }

    网上也查过了一些例子,有人说CStaitc无法调用到DrawItem,经过我3个小时的碰运气,发现时可以调用的。

  • 相关阅读:
    Spring MVC(一)
    Spring-IOC总结
    IT
    Spring基础
    Maven
    Ajax笔记
    数据库和SQL语言
    JDBC
    拦截器
    文件上传
  • 原文地址:https://www.cnblogs.com/yuzhould/p/4455018.html
Copyright © 2020-2023  润新知