📄 atldiceobj.cpp
字号:
// AtlDiceObj.cpp : Implementation of CAtlDiceObj
#include "stdafx.h"
#include "AtlDice.h"
#include "AtlDiceObj.h"
/////////////////////////////////////////////////////////////////////////////
// CAtlDiceObj
/**********************************************
#define MAX_DIEFACES 6
HBITMAP m_dieBitmaps[MAX_DIEFACES];
unsigned short m_nFirstDieValue;
unsigned short m_nSecondDieValue;
***********************************************/
BOOL CAtlDiceObj::LoadBitmaps()
{
BOOL bSuccess=TRUE;
int nID=IDB_DICE1;
switch(m_nDiceColor){
case 0:
nID=IDB_DICE1;
break;
case 1:
nID=IDB_BLUEDICE1;
break;
case 2:
nID=IDB_REDDICE1;
break;
}
for(int i=0;i<MAX_DIEFACES;i++){
DeleteObject(m_dieBitmaps[i]);
m_dieBitmaps[i]=LoadBitmap(_Module.m_hInst,MAKEINTRESOURCE(nID+i));
if(!m_dieBitmaps[i]){
::MessageBox(NULL,
"Failed to load bitmaps",
NULL,
MB_OK);
bSuccess=FALSE;
}
}
return bSuccess;
}
void CAtlDiceObj::ShowFirstDieFace(ATL_DRAWINFO &di)
{
BITMAP bmpInfo;
GetObject(m_dieBitmaps[m_nFirstDieValue-1],sizeof(bmpInfo),&bmpInfo);
SIZE size;
size.cx=bmpInfo.bmWidth;
size.cy=bmpInfo.bmHeight;
HDC hMemDC;
hMemDC=CreateCompatibleDC(di.hdcDraw);
HBITMAP hOldBitmap;
HBITMAP hbm=m_dieBitmaps[m_nFirstDieValue-1];
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hbm);
if(hOldBitmap==NULL) return;
BitBlt(di.hdcDraw,
di.prcBounds->left+1,
di.prcBounds->top+1,
size.cx,
size.cy,
hMemDC,0,
0,
SRCCOPY);
SelectObject(di.hdcDraw,hOldBitmap);
DeleteDC(hMemDC);
}
void CAtlDiceObj::ShowSecondDieFace(ATL_DRAWINFO &di)
{
BITMAP bmpInfo;
GetObject(m_dieBitmaps[m_nSecondDieValue-1],sizeof(bmpInfo),&bmpInfo);
SIZE size;
size.cx=bmpInfo.bmWidth;
size.cy=bmpInfo.bmHeight;
HDC hMemDC;
hMemDC=CreateCompatibleDC(di.hdcDraw);
HBITMAP hOldBitmap;
HBITMAP hbm=m_dieBitmaps[m_nSecondDieValue-1];
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hbm);
if(hOldBitmap==NULL) return;
BitBlt(di.hdcDraw,
di.prcBounds->left+size.cx+2,
di.prcBounds->top+1,
size.cx,
size.cy,
hMemDC,0,
0,
SRCCOPY);
SelectObject(di.hdcDraw,hOldBitmap);
DeleteDC(hMemDC);
}
STDMETHODIMP CAtlDiceObj::RollDice()
{
// TODO: Add your implementation code here
SetTimer(1,250);
return S_OK;
}
STDMETHODIMP CAtlDiceObj::get_m_nDiceColor(short *pVal)
{
// TODO: Add your implementation code here
*pVal=m_nDiceColor;
return S_OK;
}
STDMETHODIMP CAtlDiceObj::put_m_nDiceColor(short newVal)
{
// TODO: Add your implementation code here
if(newVal<3 && newVal>=0)
m_nDiceColor=newVal;
LoadBitmaps();
FireViewChange();
return S_OK;
}
STDMETHODIMP CAtlDiceObj::get_TimestoRoll(short *pVal)
{
// TODO: Add your implementation code here
*pVal=m_nTimestoRoll;
return S_OK;
}
STDMETHODIMP CAtlDiceObj::put_TimestoRoll(short newVal)
{
// TODO: Add your implementation code here
m_nTimestoRoll=newVal;
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -