如何模拟七段数码管的显示 请问各位大虾如何通过Windows API函数模拟七段数码管的显示,不是用位图的形式,通过GDI绘图的形式? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 VC知识库第53期有一篇这方面的文章 《七段数码显示的数字时钟》http://www.vckbase.com/document/viewdoc/?id=1839 你可以去看看那 我自己写的,用画的方式实现,比较简单,希望能满足你的需求。//****************************************************************//// 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{// Constructionpublic: CEightLED();// Attributespublic:// Operationspublic:// Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CEightLED) //}}AFX_VIRTUAL// Implementationpublic: 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 functionsprotected: //{{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_) // EightLED.cpp : implementation file//#include "stdafx.h"#include "EightLED.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic 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_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CEightLED message handlersvoid 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);} 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);} 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,在相应部分调用显示内容设定成员函数。 求救!标签页控件的标签可以从右到左排列吗? 用spy++获得一个控件的句柄,用什么函数获得该控件的指针? Visual C++ 6.0安装问题 一个线程先后的问题 如何使一个CDialog类的窗口总位于其他窗口的最上面 高分求助,在线等待!在标准C中如何更改文件里面的内容? CTreeView的问题! 请问CHM文件是怎么做出来? 一个很是让人发难的VC,困惑人 请问一个SMTP的问题 %3C 对应< %3E对应> %2F 对应: 这是什么编码啊 UDP端口的问题
//****************************************************************//
// 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_)
// 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);}
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);
}
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,在相应部分调用显示内容设定成员函数。