percent.cpp
来自「MFC编程实例」· C++ 代码 · 共 73 行
CPP
73 行
#include "stdafx.h"
#include "GDI.h"
#include "Percent.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CPercent::CPercent()
{
m_nRange=100;
m_nCurPos=0;
}
CPercent::~CPercent()
{
}
BEGIN_MESSAGE_MAP(CPercent, CStatic)
//{{AFX_MSG_MAP(CPercent)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CPercent::OnPaint()
{
CPaintDC dc(this);
CRect rect;
CRect rectHalf;
CString szStr;
CSize sizeExtent;
COLORREF colorTextOld;
COLORREF colorBkOld;
if(m_nRange != 0)
{
GetClientRect(rect);
szStr.Format("%d%%", m_nCurPos*100/m_nRange);
colorTextOld=dc.SetTextColor(RGB(255, 255, 255));
colorBkOld=dc.SetBkColor(RGB(0, 0, 255));
sizeExtent=dc.GetTextExtent(szStr);
rectHalf=rect;
rectHalf.right=rect.Width()*m_nCurPos/m_nRange;
dc.ExtTextOut
(
(rect.Width()-sizeExtent.cx)/2,
(rect.Height()-sizeExtent.cy)/2,
ETO_OPAQUE|ETO_CLIPPED,
rectHalf,
szStr,
NULL
);
rectHalf.left=rectHalf.right+1;
rectHalf.right=rect.right;
dc.SetTextColor(RGB(0, 0, 255));
dc.SetBkColor(RGB(255, 255, 255));
dc.ExtTextOut
(
(rect.Width()-sizeExtent.cx)/2,
(rect.Height()-sizeExtent.cy)/2,
ETO_OPAQUE|ETO_CLIPPED,
rectHalf,
szStr,
NULL
);
dc.SetTextColor(colorTextOld);
dc.SetBkColor(colorBkOld);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?