?? goldview.cpp
字號:
#include "StdAfx.h"
#include "Resource.h"
#include "GoldView.h"
//////////////////////////////////////////////////////////////////////////
//宏定義
#define GOLD_IMAGE_WIDTH 48 //籌碼寬
#define GOLD_IMAGE_HEIGHT 41 //籌碼高
//靜態(tài)變量
bool CGoldView::m_bInit=false; //初始標(biāo)志
CSkinImage CGoldView::m_ImageGold; //正常籌碼
//////////////////////////////////////////////////////////////////////////
//構(gòu)造函數(shù)
CGoldView::CGoldView()
{
m_lGold=0L;
m_lMaxLayer=5;
memset(m_lGoldCount,0,sizeof(m_lGoldCount));
if (m_bInit==false)
{
m_bInit=true;
m_ImageGold.SetLoadInfo(IDB_GOLD,GetModuleHandle(NULL));
}
return;
}
//析構(gòu)函數(shù)
CGoldView::~CGoldView()
{
}
//設(shè)置籌碼
void CGoldView::SetGold(LONG lGold)
{
if (m_lGold!=lGold)
{
m_lGold=lGold;
RectifyGoldLayer();
}
return;
}
//設(shè)置層數(shù)
void CGoldView::SetMaxGoldLayer(LONG lMaxLayer)
{
if (m_lMaxLayer!=lMaxLayer)
{
m_lMaxLayer=lMaxLayer;
RectifyGoldLayer();
}
return;
}
//繪畫籌碼
void CGoldView::DrawGoldView(CDC * pDC, int nXPos, int nYPos)
{
//加載位圖
CImageHandle ImageHandle(&m_ImageGold);
//繪畫籌碼
int nYPosDraw=nYPos-GOLD_IMAGE_HEIGHT/2;
for (LONG i=0;i<CountArray(m_lGoldCount);i++)
{
for (LONG j=0;j<m_lGoldCount[i];j++)
{
m_ImageGold.AlphaDrawImage(pDC,nXPos-GOLD_IMAGE_WIDTH/2,nYPosDraw,GOLD_IMAGE_WIDTH,GOLD_IMAGE_HEIGHT,
i*GOLD_IMAGE_WIDTH,0,RGB(255,0,255));
nYPosDraw-=3;
}
}
//繪畫數(shù)字
if (m_lGold!=0L)
{
TCHAR szBuffer[64]=TEXT("");
GetGlodString(m_lGold,szBuffer);
CRect DrawRect(nXPos-50,nYPos+GOLD_IMAGE_HEIGHT/2+5,nXPos+50,nYPos+GOLD_IMAGE_HEIGHT/2+17);
pDC->SetTextColor(RGB(250,250,250));
pDC->DrawText(szBuffer,lstrlen(szBuffer),&DrawRect,DT_CENTER|DT_VCENTER|DT_NOCLIP|DT_SINGLELINE);
}
return;
}
//調(diào)整籌碼層
void CGoldView::RectifyGoldLayer()
{
//變量定義
LONG lBasicGold[]={500L,100L,50L,10L,5L,1L},lGold=m_lGold,lGoldLayer=0L;
memset(m_lGoldCount,0,sizeof(m_lGoldCount));
//調(diào)整籌碼層
for (LONG i=0;i<CountArray(lBasicGold);i++)
{
if (lGold>=lBasicGold[i])
{
m_lGoldCount[i]=lGold/lBasicGold[i];
lGold-=m_lGoldCount[i]*lBasicGold[i];
lGoldLayer+=m_lGoldCount[i];
if (lGoldLayer>=m_lMaxLayer)
{
m_lGoldCount[i]-=(lGoldLayer-m_lMaxLayer);
return;
}
if (lGold==0L) break;
}
}
return;
}
//整性變字符
LPCTSTR CGoldView::GetGlodString(LONG lGold, TCHAR szString[])
{
//轉(zhuǎn)換字符
DWORD dwNumBit=0L,dwCharBit=0L;
do
{
dwNumBit++;
szString[dwCharBit++]=(TCHAR)(lGold%10+TEXT('0'));
if (dwNumBit%3==0) szString[dwCharBit++]=TEXT(',');
lGold/=10;
} while (lGold!=0L);
//調(diào)整字符
if (szString[dwCharBit-1]==TEXT(',')) szString[dwCharBit-1]=0;
szString[dwCharBit]=0;
_tcsrev(szString);
return szString;
}
//////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -