#pragma once #include "uibase.h" #include class uiPetMan; #define MAX_LOTTO_SLOT 1 //应征栏个数 struct LOTTO_BASE_INFO { DWORD wDrawNum; BYTE arLuckyNum[LOTTO_NUM_PICKS]; //中奖号码 MONEY LottoHeim; //彩票基金 DWORD dwWinnerNum; //一等奖获奖者 MONEY WinnerHeim; //一等奖奖金 }; struct LOTTO_APPLY_DATA { LOTTO_APPLY_DATA( void ) { memset(this, 0, sizeof(*this)); } DWORD wDrawNum; BYTE byEntryCnt; BYTE arNumInfo[LOTTO_MAX_TICKETS][LOTTO_NUM_PICKS]; }; class uiLottoWindow : public uiBase,public SCItemSlotContainer { enum eLotto_POS { LOTTO_BTN_SLOT =0, //插槽按钮(应征内容下) LOTTO_BTN_EXIT, //关闭按钮 LOTTO_BTN_APPLY, //提交按钮 LOTTO_TXT_INFO, LOTTO_TXT_DRAWNUM, LOTTO_TXT_WINNUM, LOTTO_TXT_HEIM_TURN, LOTTO_TXT_WINNER_TURN, LOTTO_TXT_WINHEIM_TURN, LOTTO_TXT_HEIM, LOTTO_TXT_WINNER, LOTTO_TXT_WINHEIM, LOTTO_LIST_TEXT, #ifdef _NA_20101011_HEIM_LOTTO_CASH_TICKET LOTTO_SCROLL, //胶农费官 #endif//_NA_20101011_HEIM_LOTTO_CASH_TICKET LOTTO_MAX }; enum { LOTTO_BTN_MAX = LOTTO_BTN_APPLY - LOTTO_BTN_SLOT + 1, LOTTO_TEXT_MAX = LOTTO_TXT_WINHEIM - LOTTO_TXT_INFO + 1, }; enum { IDX_LOTTO_INFO=0, IDX_LOTTO_DRAWNUM, IDX_LOTTO_WINNUM, IDX_LOTTO_HEIM_TURN, IDX_LOTTO_WINNER_TURN, IDX_LOTTO_WINHEIM_TURN, IDX_LOTTO_HEIM, IDX_LOTTO_WINNER, IDX_LOTTO_WINHEIM, }; public: uiLottoWindow(InterfaceManager *pUIMan); virtual ~uiLottoWindow(void); virtual VOID Init( CDrawBase * pDrawBase ); virtual VOID Release(); virtual void OnUpdateSolarDialog(); virtual void OnRenderSolarDialog(); virtual VOID MessageProc( SI_MESSAGE * pMessage ); virtual VOID MouseOver_MsgProc( SI_MESSAGE * pMessage ); virtual void OnShowWindow( BOOL val ); void SetItemNum(int iNum=0); void RefreshLottoSlot(); void SetEnableWindow(bool bFlag); void SetApplyInfo(); void InsertLastApply(WORD wDrawNum,BYTE *arApplyNum); void InsertApplyInfo(LOTTO_APPLY_DATA& Data,BOOL bTail=FALSE); void SetLottoBaseInfo(LOTTO_BASE_INFO &rInfo); private: void InsertNewApply(WORD wDrawNum,BYTE *arApplyNum); void ClearAllInLottoInfo(); void renderToolTip(); CControlWZ * getControl( POSTYPE AtPos ); POSTYPE getCtrlIDToPos( WzID wzId ); void LottoErrorMsg(int iStringCode); void InitControls(); void InitUnitRenderer(); virtual RC::eSLOT_INSERT_RESULT InsertSlot( POSTYPE AtPos, SCSlot & IN rSlot ); virtual BOOL DeleteSlot( POSTYPE AtPos, SCSlot * pSlotOut ); #ifdef _NA_20101011_HEIM_LOTTO_CASH_TICKET void DownScroll(int nRange); void UpScroll(int nRange); #endif//_NA_20101011_HEIM_LOTTO_CASH_TICKET private: static WzID m_wzId[LOTTO_MAX]; CCtrlButtonWZ* m_pLottoBtn[LOTTO_BTN_MAX]; CCtrlStaticWZ* m_pTxtCtrl[LOTTO_TEXT_MAX]; CCtrlListWZ* m_pList; //览葛郴开 府胶飘 CCtrlVScrollWZ* m_pScroll; //览葛郴侩 胶农费 ItemUnitRenderer * m_pItemUnitRenderer; SCItemSlot * m_pItemToolTip; std::list m_listApplyContainer; #ifdef _NA_20101011_HEIM_LOTTO_CASH_TICKET BYTE offset_list_; #endif//_NA_20101011_HEIM_LOTTO_CASH_TICKET }; //------------------------------------------------------------------------------ /** */ inline POSTYPE uiLottoWindow::getCtrlIDToPos( WzID wzId ) { for( POSTYPE i = 0 ; i < LOTTO_MAX ; ++i ) { if( m_wzId[i] == wzId ) { return i; } } return LOTTO_MAX; } //------------------------------------------------------------------------------ /** */ inline CControlWZ *uiLottoWindow::getControl( POSTYPE AtPos ) { ASSERT( AtPos < LOTTO_MAX ); return GetControlWZ( m_wzId[AtPos] ); }