豪车转盘【源码】

[复制链接]

该用户从未签到

2380

主题

2433

帖子

9139

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9139
QQ
跳转到指定楼层
楼主
发表于 2017-6-13 11:02:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

想要查看内容赶紧注册登陆吧!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
// DlgBank.cpp : implementation file
//

#include "stdafx.h"
#include "DlgBank.h"
#include "resource.h"
#include ".\dlgbank.h"
#include "GameClientView.h"

//////////////////////////////////////////////////////////////////////////

//类声明
//class CGameClientView;
#define IDC_OK                500
#define IDC_CANCEL            501
#define    IDC_FRESH            502

//////////////////////////////////////////////////////////////////////////

//定时器I D
#define IDI_CHARMVALUE_UPDATE_VIEW        1                                //更新界面
#define TIME_CHARMVALUE_UPDATE_VIEW        200                                //更新界面
void MakeString(CString &strNum,SCORE lNumber)
{
    CString strTempNum;
    strTempNum.Format(_T("%I64d"), (lNumber>0?lNumber:-lNumber));

    int nLength = strTempNum.GetLength();
    for (int i = 0; i < int((nLength-1)/3); i++)
        strTempNum.Insert(nLength - 3*(i+1), _T(","));
    strNum.Format(_T("%s%s"), (lNumber<0?_T("-"):_T("")), strTempNum);
}

void MakeStringToNum(CString str,SCORE &Num)
{
    CString strNumber = str;
    strNumber.Remove(',');
    strNumber.Trim();

#ifndef _UNICODE
    _snscanf(strNumber.GetBuffer(),strNumber.GetLength(),_TEXT("%I64d"),&Num);
#else
    _snwscanf(strNumber.GetBuffer(),strNumber.GetLength(),_TEXT("%I64d"),&Num);
#endif
}

IMPLEMENT_DYNAMIC(CDlgBank, CSkinDialog)
CDlgBank::CDlgBank(CWnd* pParent /*=NULL*/)
    : CSkinDialog(IDD_BANK_STORAGE, pParent)
{
    m_lInCount=0;
    m_lGameGold=0;
    m_lStorageGold=0;
    m_pMeUserData=NULL;
    m_pIClientKernel=NULL;
    m_bBankStorage=true;
    m_blCanStore=false;
    m_blCanGetOnlyFree=false;
    m_ImageFrame.LoadImage(AfxGetInstanceHandle(),TEXT("BANK_FRAME"));   
    m_ImageNumber.LoadImage(AfxGetInstanceHandle(),TEXT("BANKNUM"));
}

CDlgBank::~CDlgBank()
{
}

void CDlgBank:oDataExchange(CDataExchange* pDX)
{
    __super:oDataExchange(pDX);

    //DDX_Control(pDX, IDOK, m_btOK);
    //DDX_Control(pDX, IDCANCEL, m_btCancel);
    DDX_Control(pDX, IDC_USER_PASSWORD, m_Edit);
    DDX_Control(pDX, IDC_STATIC_PASS, m_Static);

    //DDX_Text(pDX, IDC_GAME_GOLD, m_lGameGold);
    //DDX_Text(pDX, IDC_STORAGE_GOLD, m_lStorageGold);
    CString strlGameGold;
    MakeString(strlGameGold,m_lGameGold);
    SetDlgItemText(IDC_GAME_GOLD,strlGameGold);

    MakeString(strlGameGold,m_lStorageGold);
    SetDlgItemText(IDC_STORAGE_GOLD,strlGameGold);
}


BEGIN_MESSAGE_MAP(CDlgBank, CSkinDialog)
    ON_WM_LBUTTONDOWN()
    ON_WM_MOUSEMOVE()
    ON_WM_TIMER()   
    ON_WM_CREATE()
    ON_BN_CLICKED(IDC_OK,OnBnClickedOk)
    ON_BN_CLICKED(IDC_CANCEL,OnCancelEvent)
    ON_BN_CLICKED(IDC_CHECK_ALL, OnBnClickedCheck)
    ON_EN_CHANGE(IDC_IN_COUNT, OnEnChangeInCount)
    ON_MESSAGE(WM_CREADED,OnCreateEd)

END_MESSAGE_MAP()


void CDlgBank::OnEnRadioStore()
{
    SetBankerActionType(true);

}

void CDlgBank::OnEnRadioGet()
{

    SetBankerActionType(false);
}

//勾选
void CDlgBank::OnBnClickedCheck()
{
    if(IsButtonSelected(IDC_CHECK_ALL))
    {
        if(m_pMeUserData!=NULL)
        {
            //设置信息
            m_lGameGold=((m_pMeUserData->GetUserScore()<0)?0:m_pmeuserdata->GetUserScore());
            m_lStorageGold=m_pMeUserData->GetUserInsure();
            m_lInCount=(m_bBankStorage)?m_lGameGold:m_lStorageGold;

            CString strlGameGold;
            MakeString(strlGameGold,m_lInCount);
            SetDlgItemText(IDC_IN_COUNT,strlGameGold);
        }
    }
    else
    {
        SetDlgItemText(IDC_IN_COUNT,_TEXT(""));
        GetDlgItem(IDC_IN_COUNT)->SetFocus();
        ((CEdit*)GetDlgItem(IDC_IN_COUNT))->SetSel(0,-1);
    }
}

//绘画数字
VOID CDlgBank:rawNumberString(CDC * pDC, SCORE lScore, INT nXPos, INT nYPos)
{
    //转换逗号
    TCHAR szControl[128]=TEXT("");
    CString cs;

    MakeString(cs,lScore);
    _sntprintf(szControl,sizeof(szControl),TEXT("%s"),cs);

    //变量定义
    INT nXDrawPos=nXPos;
    INT nScoreLength=lstrlen(szControl);

    //绘画判断
    if (nScoreLength>0L)
    {
        ////加载资源
        //CPngImage ImageNumber;
        //ImageNumber.LoadImage(GetModuleHandle(SHARE_CONTROL_DLL_NAME),TEXT("BANKNUM"));

        //获取大小
        CSize SizeNumber;
        SizeNumber.SetSize(m_ImageNumber.GetWidth()/12L,m_ImageNumber.GetHeight());

        //绘画数字
        for (INT i=0;i<nScoreLength;i++)
        {
            //绘画逗号
            if (szControl==TEXT(','))
            {
                m_ImageNumber.DrawImage(pDC,nXDrawPos,nYPos,SizeNumber.cx,SizeNumber.cy,SizeNumber.cx*10L,0L);
            }

            //绘画点号
            if (szControl==TEXT('.'))
            {
                m_ImageNumber.DrawImage(pDC,nXDrawPos,nYPos,SizeNumber.cx,SizeNumber.cy,SizeNumber.cx*11L,0L);
            }

            //绘画数字
            if (szControl>=TEXT('0')&&szControl<=TEXT('9'))
            {
                m_ImageNumber.DrawImage(pDC,nXDrawPos,nYPos,SizeNumber.cx,SizeNumber.cy,SizeNumber.cx*(szControl-TEXT('0')),0L);
            }

            //设置位置
            nXDrawPos+=SizeNumber.cx;
        }
    }

    return;
}


//提取按钮
void CDlgBank::OnBnClickedOk()
{   
    //数字转换
    CString strInCount;
    GetDlgItem(IDC_IN_COUNT)->GetWindowText(strInCount);
    MakeStringToNum(strInCount, m_lInCount);

    //参数验证
    if (false==m_bBankStorage && (m_lInCount <= 0="" m_lincount=""> m_lStorageGold ))
    {
        CString strMessage;
        if(m_lStorageGold>0)strMessage.Format(TEXT("你输入的游戏币值必须在1和%I64d之间"), m_lStorageGold);
        else strMessage.Format(TEXT("你的存储游戏币数目为0,不能进行提取操作!"));
        MessageBox(strMessage,TEXT("温馨提示"));

        GetDlgItem(IDC_IN_COUNT)->SetFocus();
        ((CEdit*)GetDlgItem(IDC_IN_COUNT))->SetSel(0,-1);
        GetDlgItem(IDC_USER_PASSWORD)->SetWindowText(_TEXT(""));
        return;
    }

    //参数验证
    if (true==m_bBankStorage && (m_lInCount <= 0="" m_lincount=""> m_lGameGold ))
    {
        CString strMessage;
        if(m_lGameGold>0)strMessage.Format(TEXT("你输入的游戏币值必须在1和%I64d之间"),m_lGameGold );
        else strMessage.Format(TEXT("你的当前游戏币数目为0,不能进行存储操作!"));
        MessageBox(strMessage,TEXT("温馨提示"));

        GetDlgItem(IDC_IN_COUNT)->SetFocus();
        ((CEdit*)GetDlgItem(IDC_IN_COUNT))->SetSel(0,-1);
        GetDlgItem(IDC_USER_PASSWORD)->SetWindowText(_TEXT(""));
        return;
    }

    //密码验证
    TCHAR szPassword[LEN_PASSWORD]=TEXT("");
    GetDlgItemText(IDC_USER_PASSWORD,szPassword,CountArray(szPassword));
    if (szPassword[0]==0&&m_blUsingPassWord)
    {
        MessageBox(TEXT("密码不能为空,请重新输入密码!"),TEXT("温馨提示"));
        GetDlgItem(IDC_USER_PASSWORD)->SetWindowText(_TEXT(""));
        GetDlgItem(IDC_USER_PASSWORD)->SetFocus();
        return;
    }

    if(m_blUsingPassWord)
    {
        TCHAR szTempPassword[LEN_PASSWORD]=TEXT("");
        CopyMemory(szTempPassword,szPassword,sizeof(szTempPassword));
        CWHEncrypt::MD5Encrypt(szTempPassword,szPassword);

    }

    if (false==m_bBankStorage)
    {
        //构造数据
        CMD_GR_C_TakeScoreRequest TakeScoreRequest;
        ZeroMemory(&TakeScoreRequest,sizeof(TakeScoreRequest));
        TakeScoreRequest.cbActivityGame=TRUE;
        TakeScoreRequest.lTakeScore=m_lInCount;
        CopyMemory(TakeScoreRequest.szInsurePass, szPassword, sizeof(TakeScoreRequest.szInsurePass));

        //发送数据
        m_pIClientKernel->SendSocketData(MDM_GR_INSURE,SUB_GR_TAKE_SCORE_REQUEST,&TakeScoreRequest,sizeof(TakeScoreRequest));
    }
    else
    {
        //状态判断
        if (US_PLAYING==m_pMeUserData->GetUserStatus())
        {
            MessageBox(TEXT("请结束游戏后再存款!"),TEXT("温馨提示"));
            return;   
        }

        //构造数据
        CMD_GR_C_SaveScoreRequest SaveScoreRequest;
        SaveScoreRequest.cbActivityGame=TRUE;
        SaveScoreRequest.lSaveScore=m_lInCount;

        //发送数据
        m_pIClientKernel->SendSocketData(MDM_GR_INSURE,SUB_GR_SAVE_SCORE_REQUEST,&SaveScoreRequest,sizeof(SaveScoreRequest));
    }

    //清空密码
    GetDlgItem(IDC_USER_PASSWORD)->SetWindowText(_TEXT(""));
    return;
}

//初始化函数
BOOL CDlgBank::OnInitDialog()
{
    CSkinDialog::OnInitDialog();

    UpdateData(FALSE);

    SetWindowText(TEXT("银行"));

    SetBankerActionType(true);   

    //定时更新
    SetTimer(IDI_CHARMVALUE_UPDATE_VIEW,TIME_CHARMVALUE_UPDATE_VIEW,NULL);

    return TRUE;
}

//绘画界面
VOID CDlgBank::OnDrawClientArea(CDC * pDC, INT nWidth, INT nHeight)
{   
    m_ImageFrame.DrawImage(pDC,30,55);
    DrawNumberString(pDC,m_lGameGold,200,78);
    DrawNumberString(pDC,m_lStorageGold,200,104);
    CRect rcScore(120,80,200,95);
    pDC->DrawText(TEXT("当前游戏币:"),rcScore,DT_END_ELLIPSIS | DT_CENTER | DT_WORDBREAK);
    CRect rcBank(120,105,200,120);
    pDC->DrawText(TEXT("银行游戏币:"),rcBank,DT_END_ELLIPSIS | DT_CENTER | DT_WORDBREAK);
    CRect rect(0,315,nWidth,nHeight);
    pDC->DrawText(TEXT("温馨提示:存入游戏币免手续费,取出将扣除1%的手续费"),rect,DT_END_ELLIPSIS | DT_CENTER | DT_WORDBREAK);
}

//更新界面
void CDlgBank::UpdateView()
{
    CString strinCount;
    GetDlgItemText(IDC_IN_COUNT,strinCount);
    SCORE OutNum = 0;
    MakeStringToNum(strinCount,OutNum);

    if(m_OrInCount!= OutNum)
    {
        m_OrInCount = OutNum;
        if(OutNum!=0)
        {
            MakeString(strinCount,OutNum);
            SetDlgItemText(IDC_IN_COUNT,strinCount);
            ((CEdit*)GetDlgItem(IDC_IN_COUNT))->SetSel(strinCount.GetLength(),strinCount.GetLength(),TRUE);
        }

        //参数验证
        if (false==m_bBankStorage && (OutNum < 0 || OutNum > m_lStorageGold ))
        {
            return;
        }

        //参数验证
        if (true==m_bBankStorage && (OutNum < 0 || OutNum > m_lGameGold ))
        {
            return;
        }
    }

    UpdateData(TRUE);

    if(m_pMeUserData==NULL)return;

    //设置信息
    m_lGameGold=((m_pMeUserData->GetUserScore()<0)?0:m_pmeuserdata->GetUserScore());
    m_lStorageGold=m_pMeUserData->GetUserInsure();

    //更新界面
    RedrawWindow(NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ERASENOW);

    CString strlGameGold;

    MakeString(strlGameGold,m_lGameGold);
    SetDlgItemText(IDC_GAME_GOLD,strlGameGold);

    MakeString(strlGameGold,m_lStorageGold);
    SetDlgItemText(IDC_STORAGE_GOLD,strlGameGold);

    UpdateData(FALSE);
}

//鼠标信息
void CDlgBank::OnLButtonDown(UINT nFlags, CPoint point)
{
    CSkinDialog::OnLButtonDown(nFlags, point);
}

//鼠标信息
void CDlgBank::OnMouseMove(UINT nFlags, CPoint point)
{
    CSkinDialog::OnMouseMove(nFlags, point);
}

//命令信息
BOOL CDlgBank:reTranslateMessage(MSG* pMsg)
{
    //过滤字母
    if(GetFocus()==GetDlgItem(IDC_IN_COUNT)&& pMsg->message==WM_CHAR)
    {
        BYTE bMesValue = (BYTE)(pMsg->wParam);
        BYTE bTemp = bMesValue-'0';
        if((bTemp<0 btemp="">9) && bMesValue!=VK_BACK) return TRUE;
    }
    return __super:reTranslateMessage(pMsg);
}

//时间消息
void CDlgBank::OnTimer(UINT nIDEvent)
{
    //时间消息
    switch(nIDEvent)
    {
    case IDI_CHARMVALUE_UPDATE_VIEW:        //更新界面
        {
            //更新界面
            UpdateView();
            return;
        }
    }
    __super::OnTimer(nIDEvent);
}

//输入信息
void CDlgBank::OnEnChangeInCount()
{
    if(!m_pMeUserData) return;

    CString strCount;
    GetDlgItem(IDC_IN_COUNT)->GetWindowText(strCount);

    //去掉前面的0
    CString strLeft = strCount.Left(1);
    if(strLeft.Find('0') != -1)
    {
        strCount = strCount.Right(strCount.GetLength() - 1);
        SetDlgItemText(IDC_IN_COUNT,strCount);
    }

    //设置信息
    m_lGameGold=((m_pMeUserData->GetUserScore()<0)?0:m_pmeuserdata->GetUserScore());
    m_lStorageGold=m_pMeUserData->GetUserInsure();
    SCORE lInCount=(m_bBankStorage)?m_lGameGold:m_lStorageGold;
    MakeStringToNum(strCount, m_lInCount);
    if((m_lInCount > lInCount || m_lInCount < 0L))
    {
        m_lInCount = lInCount;
        CString strlGameGold;
        MakeString(strlGameGold,m_lInCount);
        SetDlgItemText(IDC_IN_COUNT,strlGameGold);
    }

    return ;
}

//是否选中
bool CDlgBank::IsButtonSelected(UINT uButtonID)
{
    return ((CButton *)GetDlgItem(uButtonID))->GetCheck()==BST_CHECKED;
}

int CDlgBank::OnCreate(LPCREATESTRUCT lpCreateStruct)
{   
    if (__super::OnCreate(lpCreateStruct)==-1) return -1;
    CRect rect(0, 0, 0, 0);   
    m_btOK.Create(NULL,WS_CHILD|WS_VISIBLE|WS_DISABLED,rect,this,IDC_OK);   
    m_btCancel.Create(NULL,WS_CHILD|WS_VISIBLE|WS_DISABLED,rect,this,IDC_CANCEL);
    m_btFresh.Create(NULL,WS_CHILD|WS_VISIBLE|WS_DISABLED,rect,this,IDC_FRESH);
    m_btOK.SetWindowPos(NULL,110,240,94,32,SWP_NOSIZE);
    m_btCancel.SetWindowPos(NULL,285,240,94,32,SWP_NOSIZE);
    m_btFresh.SetWindowPos(NULL,390,66,64,64,SWP_NOSIZE);
   
    return 0;
}

afx_msg LRESULT  CDlgBank::OnCreateEd(WPARAM wparam,LPARAM lparam)
{
    return 1;
}

//选中按钮
void CDlgBank::SetButtonSelected(UINT uButtonID, bool bSelected)
{
    CButton * pButton=(CButton *)GetDlgItem(uButtonID);
    if (bSelected) pButton->SetCheck(BST_CHECKED);
    else pButton->SetCheck(BST_UNCHECKED);
    return;
}

//设置信息
void CDlgBank::SetSendInfo(IClientKernel *pClientKernel,IClientUserItem const*pMeUserData)
{
    ASSERT(pClientKernel!=NULL);

    //设置信息
    m_pIClientKernel = pClientKernel;
    m_pMeUserData=const_cast(pMeUserData);
    return;
}

void CDlgBank::SetPostPoint(CPoint Point)
{
    CRect Rect;
    GetWindowRect(&Rect);
    SetWindowPos(NULL,Point.x,Point.y/*-Rect.bottom*/+Rect.top,Rect.right-Rect.left,Rect.bottom-Rect.top,/*SWP_NOMOVE|*/SWP_NOZORDER);
}

//发送信息
void CDlgBank::SendSocketData(WORD wMainCmdID, WORD wSubCmdID, void * pBuffer, WORD wDataSize)
{
    ASSERT(m_pIClientKernel!=NULL);

    //发送信息
    m_pIClientKernel->SendSocketData(wMainCmdID, wSubCmdID, pBuffer, wDataSize);

    return ;
}

void CDlgBank::HideStorage()
{
    //m_RadioStore.ShowWindow(SW_HIDE);
    //m_RadioGet.ShowWindow(SW_HIDE);
}

void CDlgBank::ShowItem()
{
    HINSTANCE hInstance = AfxGetInstanceHandle();   
    m_btFresh.SetButtonImage(IDB_BT_FRESH,hInstance,false,false);
    m_btFresh.EnableWindow(TRUE);
    if(m_bBankStorage)
    {
        GetDlgItem(IDC_IN_COUNT)->EnableWindow(m_blCanStore);
        GetDlgItem(IDC_USER_PASSWORD)->EnableWindow(FALSE);
        GetDlgItem(IDC_USER_PASSWORD)->ShowWindow(SW_HIDE);
        GetDlgItem(IDC_STATIC_PASS)->ShowWindow(SW_HIDE);
        m_btOK.SetButtonImage(IDB_SAVEGOLD, hInstance, false,false);
        m_btCancel.SetButtonImage(IDB_CLOSE,hInstance,false,false);
        m_btOK.EnableWindow(m_blCanStore);
        m_btCancel.EnableWindow(TRUE);
    }
    else
    {
        BOOL bShow = TRUE;
        if(m_blCanGetOnlyFree && m_pMeUserData->GetUserStatus() == US_PLAYING) bShow = FALSE;
        GetDlgItem(IDC_IN_COUNT)->EnableWindow(TRUE);
        GetDlgItem(IDC_USER_PASSWORD)->EnableWindow(TRUE);
        GetDlgItem(IDC_USER_PASSWORD)->ShowWindow(SW_SHOW);
        GetDlgItem(IDC_STATIC_PASS)->ShowWindow(SW_SHOW);
        m_btOK.SetButtonImage(IDB_GETGOLD, hInstance, false,false);
        m_btCancel.SetButtonImage(IDB_CLOSE,hInstance,false,false);
        m_btOK.EnableWindow(bShow);
        m_btCancel.EnableWindow(TRUE);
    }

}

//设置类型
void CDlgBank::SetBankerActionType(bool bStorage)
{
    //设置变量
    m_bBankStorage = bStorage;
    m_lInCount = 0;
    GetDlgItem(IDC_IN_COUNT)->SetWindowText(TEXT(""));
    ((CButton*)GetDlgItem(IDC_CHECK_ALL))->SetCheck(0);

    //设置标题
    if (m_bBankStorage)
    {

        //GetDlgItem(IDOK)->SetWindowText(TEXT("存款"));
        m_blUsingPassWord = false;
    }
    else
    {
        //GetDlgItem(IDOK)->SetWindowText(TEXT("取款"));
        m_blUsingPassWord = true;
    }

    if(m_blUsingPassWord)
    {
        GetDlgItem(IDC_USER_PASSWORD)->EnableWindow(m_blCanStore);
    }

    ShowItem();
   
}

void CDlgBank::OnCancelEvent()
{
    DestroyWindow();
}

void CDlgBank::OnCancel()
{
    // TODO: Add your specialized code here and/or call the base class
    DestroyWindow();

    //CSkinDialog::OnCancel();
}

新建文本文档.txt

48 Bytes, 下载次数: 0

售价: 10 代码豆  [记录]  [购买]

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

快速回复高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表