请问各位大虾如何通过Windows API函数模拟七段数码管的显示,不是用位图的形式,通过GDI绘图的形式?

解决方案 »

  1.   

    VC知识库第53期有一篇这方面的文章 《七段数码显示的数字时钟》http://www.vckbase.com/document/viewdoc/?id=1839 你可以去看看那
      

  2.   

    我自己写的,用画的方式实现,比较简单,希望能满足你的需求。
    //****************************************************************//
    // Class Name:CEightLED(derived from CStatic)                    //
    // Function:Show Numbers or Characters like Eight-LED Clock.     //
    // Author:Flag Shang                                             //
    // Released Date:2010.06.10                                      //
    // Version:1.0                                                    //
    //****************************************************************//
    #if !defined(AFX_EIGHTLED_H__DFF1BEE0_DF1C_42B7_912A_F3E2AE93C7BD__INCLUDED_)
    #define AFX_EIGHTLED_H__DFF1BEE0_DF1C_42B7_912A_F3E2AE93C7BD__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // EightLED.h : header file
    ///////////////////////////////////////////////////////////////////////////////
    // CEightLED windowclass CEightLED : public CStatic
    {
    // Construction
    public:
    CEightLED();// Attributes
    public:// Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CEightLED)
    //}}AFX_VIRTUAL// Implementation
    public:
    void SetText(FLOAT fValue, FLOAT fValue2);//設定浮點數顯示,fValue2隨便填一個浮點數以區別重載函數
    void SetText(LONG64 lValue);//設定整形數顯示
    void SetFontBkColor(COLORREF crFontBkColor);//設定字體背景色
    void SetFontColor(COLORREF crFontColor);//設定字體色
    void SetBackColor(COLORREF crBackColor);//設定背景色
    void DrawMinus(CPaintDC *pDC, CPoint Zero);
    void DrawDot(CPaintDC *pDC, CPoint Zero);
    int m_nSingleWidth;
    CPoint m_ptZero;
    void SetText(CString strText);//設定字符串顯示
    void Draw0(CPaintDC *pDC, CPoint Zero);
    void Draw1(CPaintDC *pDC, CPoint Zero);
    void Draw2(CPaintDC *pDC, CPoint Zero);
    void Draw3(CPaintDC *pDC, CPoint Zero);
    void Draw4(CPaintDC *pDC, CPoint Zero);
    void Draw5(CPaintDC *pDC, CPoint Zero);
    void Draw6(CPaintDC *pDC, CPoint Zero);
    void Draw7(CPaintDC *pDC, CPoint Zero);
    void Draw8(CPaintDC *pDC, CPoint Zero);
    COLORREF m_FontBkColor;
    COLORREF m_FontColor;
    COLORREF m_BackColor;
    void DrawNumberBk(CPaintDC *pDC, CPoint Zero);
    void Draw9(CPaintDC *pDC, CPoint Zero);
    void DrawG(CPaintDC *pDC, CPoint Zero);
    void DrawF(CPaintDC *pDC, CPoint Zero);
    void DrawE(CPaintDC *pDC, CPoint Zero);
    void DrawD(CPaintDC *pDC, CPoint Zero);
    void DrawC(CPaintDC *pDC, CPoint Zero);
    void DrawB(CPaintDC* pDC, CPoint Zero);
    void DrawA(CPaintDC *pDC, CPoint Zero);
    virtual ~CEightLED(); // Generated message map functions
    protected:
    //{{AFX_MSG(CEightLED)
    afx_msg void OnPaint();
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_EIGHTLED_H__DFF1BEE0_DF1C_42B7_912A_F3E2AE93C7BD__INCLUDED_)
      

  3.   


    // EightLED.cpp : implementation file
    //#include "stdafx.h"
    #include "EightLED.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // CEightLEDCEightLED::CEightLED()
    {
    m_FontBkColor=RGB(245,216,216);
    m_BackColor=RGB(255,255,255);
    m_FontColor=RGB(255,0,0);
    m_nSingleWidth=13;

    m_ptZero.x=0;
    m_ptZero.y=0;
    }CEightLED::~CEightLED()
    {
    }
    BEGIN_MESSAGE_MAP(CEightLED, CStatic)
    //{{AFX_MSG_MAP(CEightLED)
    ON_WM_PAINT()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CEightLED message handlers
    void CEightLED::DrawA(CPaintDC *pDC, CPoint Zero)
    { CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen); //A,左上
    pDC->MoveTo(Zero.x+1,Zero.y+2);
    pDC->LineTo(Zero.x+1,Zero.y+11);
    pDC->MoveTo(Zero.x+2,Zero.y+3);
    pDC->LineTo(Zero.x+2,Zero.y+10);
    pDC->MoveTo(Zero.x+3,Zero.y+4);
    pDC->LineTo(Zero.x+3,Zero.y+9); pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawB(CPaintDC *pDC, CPoint Zero)
    {
    CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen); //B,右上
    pDC->MoveTo(Zero.x+9,Zero.y+4);
    pDC->LineTo(Zero.x+9,Zero.y+9);
    pDC->MoveTo(Zero.x+10,Zero.y+3);
    pDC->LineTo(Zero.x+10,Zero.y+10);
    pDC->MoveTo(Zero.x+11,Zero.y+2);
    pDC->LineTo(Zero.x+11,Zero.y+11); pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawC(CPaintDC *pDC, CPoint Zero)
    {
    CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen);

        //C,左下
    pDC->MoveTo(Zero.x+1,Zero.y+12);
    pDC->LineTo(Zero.x+1,Zero.y+21);
    pDC->MoveTo(Zero.x+2,Zero.y+13);
    pDC->LineTo(Zero.x+2,Zero.y+20);
    pDC->MoveTo(Zero.x+3,Zero.y+14);
    pDC->LineTo(Zero.x+3,Zero.y+19);

    pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawD(CPaintDC *pDC, CPoint Zero)
    {
    CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen);

        //D,右下
    pDC->MoveTo(Zero.x+9,Zero.y+14);
    pDC->LineTo(Zero.x+9,Zero.y+19);
    pDC->MoveTo(Zero.x+10,Zero.y+13);
    pDC->LineTo(Zero.x+10,Zero.y+20);
    pDC->MoveTo(Zero.x+11,Zero.y+12);
    pDC->LineTo(Zero.x+11,Zero.y+21);

    pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawE(CPaintDC *pDC, CPoint Zero)
    {
    CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen);

        //E,上
    pDC->MoveTo(Zero.x+2,Zero.y+1);
    pDC->LineTo(Zero.x+11,Zero.y+1);
    pDC->MoveTo(Zero.x+3,Zero.y+2);
    pDC->LineTo(Zero.x+10,Zero.y+2);
    pDC->MoveTo(Zero.x+4,Zero.y+3);
    pDC->LineTo(Zero.x+9,Zero.y+3);

    pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawF(CPaintDC *pDC, CPoint Zero)
    {
    CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen);

        //F,中
    pDC->MoveTo(Zero.x+3,Zero.y+10);
    pDC->LineTo(Zero.x+10,Zero.y+10);
    pDC->MoveTo(Zero.x+2,Zero.y+11);
    pDC->LineTo(Zero.x+11,Zero.y+11);
    pDC->MoveTo(Zero.x+3,Zero.y+12);
    pDC->LineTo(Zero.x+10,Zero.y+12);

    pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawG(CPaintDC *pDC, CPoint Zero)
    {
    CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen);

        //G,下
    pDC->MoveTo(Zero.x+4,Zero.y+19);
    pDC->LineTo(Zero.x+9,Zero.y+19);
    pDC->MoveTo(Zero.x+3,Zero.y+20);
    pDC->LineTo(Zero.x+10,Zero.y+20);
    pDC->MoveTo(Zero.x+2,Zero.y+21);
    pDC->LineTo(Zero.x+11,Zero.y+21);

    pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::Draw9(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    DrawG(pDC, Zero);}
      

  4.   


    void CEightLED::DrawNumberBk(CPaintDC *pDC, CPoint Zero)
    { CPen* pNewPen;
    CPen* pOldPen; pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_BackColor);
    pOldPen=pDC->SelectObject(pNewPen);
    CBrush* pNewBrush;
    CBrush* pOldBrush; pNewBrush=new CBrush;
    pNewBrush->CreateSolidBrush(m_BackColor);
    pOldBrush=pDC->SelectObject(pNewBrush); pDC->Rectangle(Zero.x,Zero.y,Zero.x+13,Zero.y+23); pDC->SelectObject(pOldBrush);
    delete pNewBrush; pDC->SelectObject(pOldPen);
    delete pNewPen; pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontBkColor);
    pOldPen=pDC->SelectObject(pNewPen); pDC->SetPixelV(Zero.x+3,Zero.y+1,m_FontBkColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+1,m_FontBkColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+1,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+1,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+2,m_FontBkColor);
    pDC->SetPixelV(Zero.x+4,Zero.y+2,m_FontBkColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+2,m_FontBkColor);
    pDC->SetPixelV(Zero.x+8,Zero.y+2,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+2,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+3,m_FontBkColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+3,m_FontBkColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+3,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+3,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+4,m_FontBkColor);
    pDC->SetPixelV(Zero.x+3,Zero.y+4,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+4,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+4,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+5,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+5,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+6,m_FontBkColor);
    pDC->SetPixelV(Zero.x+3,Zero.y+6,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+6,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+6,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+7,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+7,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+8,m_FontBkColor);
    pDC->SetPixelV(Zero.x+3,Zero.y+8,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+8,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+8,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+9,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+9,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+10,m_FontBkColor);
    pDC->SetPixelV(Zero.x+4,Zero.y+10,m_FontBkColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+10,m_FontBkColor);
    pDC->SetPixelV(Zero.x+8,Zero.y+10,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+10,m_FontBkColor);

    pDC->SetPixelV(Zero.x+3,Zero.y+11,m_FontBkColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+11,m_FontBkColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+11,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+11,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+12,m_FontBkColor);
    pDC->SetPixelV(Zero.x+4,Zero.y+12,m_FontBkColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+12,m_FontBkColor);
    pDC->SetPixelV(Zero.x+8,Zero.y+12,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+12,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+13,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+13,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+14,m_FontBkColor);
    pDC->SetPixelV(Zero.x+3,Zero.y+14,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+14,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+14,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+15,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+15,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+16,m_FontBkColor);
    pDC->SetPixelV(Zero.x+3,Zero.y+16,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+16,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+16,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+17,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+17,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+18,m_FontBkColor);
    pDC->SetPixelV(Zero.x+3,Zero.y+18,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+18,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+18,m_FontBkColor);

    pDC->SetPixelV(Zero.x+2,Zero.y+19,m_FontBkColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+19,m_FontBkColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+19,m_FontBkColor);
    pDC->SetPixelV(Zero.x+10,Zero.y+19,m_FontBkColor);

    pDC->SetPixelV(Zero.x+1,Zero.y+20,m_FontBkColor);
    pDC->SetPixelV(Zero.x+4,Zero.y+20,m_FontBkColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+20,m_FontBkColor);
    pDC->SetPixelV(Zero.x+8,Zero.y+20,m_FontBkColor);
    pDC->SetPixelV(Zero.x+11,Zero.y+20,m_FontBkColor);

    pDC->SetPixelV(Zero.x+3,Zero.y+21,m_FontBkColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+21,m_FontBkColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+21,m_FontBkColor);
    pDC->SetPixelV(Zero.x+9,Zero.y+21,m_FontBkColor); pDC->SelectObject(pOldPen);
    delete pNewPen;}void CEightLED::Draw8(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    DrawG(pDC, Zero);
    }void CEightLED::Draw7(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    //DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    //DrawF(pDC, Zero);
    //DrawG(pDC, Zero);
    }void CEightLED::Draw6(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    DrawA(pDC, Zero);
    //DrawB(pDC, Zero);
    DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    DrawG(pDC, Zero);
    }void CEightLED::Draw5(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    DrawA(pDC, Zero);
    //DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    DrawG(pDC, Zero);}void CEightLED::Draw4(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    //DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    //DrawG(pDC, Zero);}void CEightLED::Draw3(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    //DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    DrawG(pDC, Zero);}void CEightLED::Draw2(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    //DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    DrawC(pDC, Zero);
    //DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    DrawG(pDC, Zero);}void CEightLED::Draw1(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    //DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    //DrawE(pDC, Zero);
    //DrawF(pDC, Zero);
    //DrawG(pDC, Zero);}void CEightLED::Draw0(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    DrawA(pDC, Zero);
    DrawB(pDC, Zero);
    DrawC(pDC, Zero);
    DrawD(pDC, Zero);
    DrawE(pDC, Zero);
    //DrawF(pDC, Zero);
    DrawG(pDC, Zero);}void CEightLED::SetText(CString strText)
    {
    SetWindowText(strText);
    Invalidate(TRUE);
    }void CEightLED::DrawDot(CPaintDC *pDC, CPoint Zero)
    { DrawNumberBk(pDC, Zero); CPen* pNewPen;
    CPen* pOldPen;
    pNewPen=new CPen;
    pNewPen->CreatePen(PS_SOLID,1,m_FontColor);
    pOldPen=pDC->SelectObject(pNewPen);

    //Dot
    pDC->SetPixelV(Zero.x+4,Zero.y+20,m_FontColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+19,m_FontColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+20,m_FontColor);
    pDC->SetPixelV(Zero.x+5,Zero.y+21,m_FontColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+19,m_FontColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+20,m_FontColor);
    pDC->SetPixelV(Zero.x+6,Zero.y+21,m_FontColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+19,m_FontColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+20,m_FontColor);
    pDC->SetPixelV(Zero.x+7,Zero.y+21,m_FontColor);
    pDC->SetPixelV(Zero.x+8,Zero.y+20,m_FontColor);
    pDC->SelectObject(pOldPen);
    delete pNewPen;
    }void CEightLED::DrawMinus(CPaintDC *pDC, CPoint Zero)
    {
    DrawNumberBk(pDC, Zero);
    //DrawA(pDC, Zero);
    //DrawB(pDC, Zero);
    //DrawC(pDC, Zero);
    //DrawD(pDC, Zero);
    //DrawE(pDC, Zero);
    DrawF(pDC, Zero);
    //DrawG(pDC, Zero);
    }void CEightLED::SetBackColor(COLORREF crBackColor)
    {
    m_BackColor=crBackColor;
    }void CEightLED::SetFontColor(COLORREF crFontColor)
    {
    m_FontColor=crFontColor;
    }void CEightLED::SetFontBkColor(COLORREF crFontBkColor)
    {
    m_FontBkColor=crFontBkColor;
    }void CEightLED::SetText(LONG64 lValue)
    {
    CString strText;
    strText.Format("%d",lValue);
    SetWindowText(strText);
    Invalidate(TRUE);
    }void CEightLED::SetText(FLOAT fValue,FLOAT fValue2)
    {
    CString strText;
    strText.Format("%f",fValue);
    SetWindowText(strText);
    Invalidate(TRUE);
    }
      

  5.   


    void CEightLED::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting CString strText;
    this->GetWindowText(strText); int nLength;
    nLength=strText.GetLength();/*
    CRect rectTemp;//重新設定Static Text所占區域
    GetClientRect(&rectTemp);
    //GetClientRect(&rectTemp);
    rectTemp.right=rectTemp.left+nLength*m_nSingleWidth;
    rectTemp.bottom=rectTemp.top+23;
    MoveWindow(rectTemp.left,rectTemp.top,rectTemp.Width(),rectTemp.Height(),TRUE);
    */ CHAR chTemp; m_ptZero.x=0;
    m_ptZero.y=0; for (int i=0;i<nLength;i++)
    {
    chTemp=strText.GetAt(i); if (chTemp=='9')
    {
    //MessageBox("9");
    Draw9(&dc,m_ptZero);
    }

    if (chTemp=='8')
    {
    Draw8(&dc,m_ptZero);
    }

    if (chTemp=='7')
    {
    Draw7(&dc,m_ptZero);
    }

    if (chTemp=='6')
    {
    //MessageBox("6");
    Draw6(&dc,m_ptZero);
    }

    if (chTemp=='5')
    {
    Draw5(&dc,m_ptZero);
    }

    if (chTemp=='4')
    {
    Draw4(&dc,m_ptZero);
    }

    if (chTemp=='3')
    {
    Draw3(&dc,m_ptZero);
    }

    if (chTemp=='2')
    {
    Draw2(&dc,m_ptZero);
    }

    if (chTemp=='1')
    {
    Draw1(&dc,m_ptZero);
    }

    if (chTemp=='0')
    {
    Draw0(&dc,m_ptZero);
    } if (chTemp=='.')
    {
    DrawDot(&dc,m_ptZero);
    } if (chTemp=='-')
    {
    DrawMinus(&dc,m_ptZero);
    } m_ptZero.x=m_ptZero.x+13; }

    // Draw9(&dc,(0,0));
    // Draw8(&dc,(0,0));
    // Draw7(&dc,(0,0));
    // Draw6(&dc,(0,0));
    // Draw5(&dc,(0,0));
    // Draw4(&dc,(0,0));
    // Draw3(&dc,(0,0));
    // Draw2(&dc,(0,0));
    //  Draw1(&dc,(0,0));
    // Draw0(&dc,(0,0)); // TODO: Add your message handler code here

    // Do not call CStatic::OnPaint() for painting messages
    }第一贴代码是头文件,第二三四贴代码是实现文件。使用方法:
    1,在对话框模板中添加Static Text控件。
    2,更改其ID值。
    3,在ClassWizard的Member Variables中为其添加CStaticEx类型的Control变量。
    4,在对话框类的OnInitDialog()中通过其Control变量调用CStaticEx的颜色设定成员函数。
    5,在相应部分调用显示内容设定成员函数。