//------------------------------------------------------------------------------ // CharSelectDialog.cpp // (C) 2005 Webzen Sunstudio //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "AskDialog.h" #include "GameFramework.h" #include "Interfacemanager.h" #include "Globalfunc.h" #include "uiSystemMan/uiSystemMan.h" #include "GameConst_Color.h" WzID AskDialog::m_wzId[ASK_MAX] = { StrToWzID("TI00"), // ok StrToWzID("TI01"), // cancel StrToWzID("L000"), // text list }; //------------------------------------------------------------------------------ /** */ AskDialog::AskDialog(InterfaceManager *pUIMan) :uiBase(pUIMan) { this->m_status = ASK_STATUS_CANCEL; } //------------------------------------------------------------------------------ /** */ AskDialog::~AskDialog(void) { _asm nop; } //------------------------------------------------------------------------------ /** */ VOID AskDialog::Init( CDrawBase * pDrawBase ) { uiBase::Init(pDrawBase); m_pOKButton = NULL; m_pCancelButton = NULL; m_pListCtrl = NULL; GetControls(); this->m_status = ASK_STATUS_NORMAL; } //------------------------------------------------------------------------------ /** */ void AskDialog::OnShowWindow(BOOL val) { if (val) { this->m_status = ASK_STATUS_NORMAL; } else { this->m_status = ASK_STATUS_CANCEL; } } //------------------------------------------------------------------------------ /** */ VOID AskDialog::Release() { } //------------------------------------------------------------------------------ /** ÅØ½ºÆ®¸¦ °³Çàó¸®ÇÑ´Ù. */ void AskDialog::InsertMessage(TCHAR *szMessage,DWORD bkColor,DWORD TxtColor) { if(m_pListCtrl) { m_pListCtrl->DeleteItemAll(); m_pListCtrl->SetBeginDrawIndex(0); m_pListCtrl->SetUnuseSelBar(TRUE); m_pListCtrl->OnFocusOut(); std::vector vstrMsg; vstrMsg.clear(); #ifdef __LTJ_TEXT_OUTPUT_AT_LIST_MOD int iListWidth = m_pListCtrl->GetSize().right - 15; #else int iListWidth = m_pListCtrl->GetSize().right - 5; #endif #ifdef _INTERNATIONAL_UI DWORD dwFontID =StrToWzID("st10"); #else DWORD dwFontID =StrToWzID("mn12"); #endif GlobalFunc::ProcessWordWrapByFontSize( &vstrMsg, szMessage, dwFontID, _tcslen(szMessage) ,iListWidth ); for( unsigned int i =0; i < vstrMsg.size(); ++i ) { int index = m_pListCtrl->InsertItemBack(); GlobalFunc::SetItem(m_pListCtrl, index , 0, (TCHAR *)vstrMsg[i].c_str() ,dwFontID, DT_VCENTER | DT_LEFT, bkColor,TxtColor , c_InterfaceSelColor); } } } //------------------------------------------------------------------------------ /** */ VOID AskDialog::MessageProc( SI_MESSAGE * pMessage ) { switch( pMessage->eResultMsg ) { case RT_MSG_LBUTTONCLICK: { switch( getCtrlIDToPos( pMessage->dwCtrlID ) ) { case ASK_OK: { this->m_status = ASK_STATUS_OK; } break; case ASK_CANCEL: { this->m_status = ASK_STATUS_CANCEL; ShowWindow( FALSE ); } break; } } break; default: { SolarDialog::MessageProc( pMessage ); } break; } } //------------------------------------------------------------------------------ /** */ VOID AskDialog::NetworkProc( MSG_BASE * pMsg ) { _asm nop; } //------------------------------------------------------------------------------ /** */ CControlWZ * AskDialog::getControl( POSTYPE AtPos ) { assert( AtPos < ASK_MAX ); return GetControlWZ( m_wzId[AtPos] ); } //------------------------------------------------------------------------------ /** */ POSTYPE AskDialog::getCtrlIDToPos( WzID wzId ) { for( POSTYPE i = 0 ; i < ASK_MAX; ++i ) { if( m_wzId[i] == wzId ) { return i; } } return ASK_MAX; } //------------------------------------------------------------------------------ /** */ VOID AskDialog::GetControls() { m_pOKButton = static_cast(getControl(ASK_OK)); SUN_ASSERT(m_pOKButton); m_pCancelButton = static_cast(getControl(ASK_CANCEL)); SUN_ASSERT(m_pCancelButton); m_pListCtrl = static_cast(getControl(ASK_LIST)); SUN_ASSERT(m_pListCtrl); }