void CItemShopLogCommand::Parse( const MSGROOT* message, CListCtrl& listCtrl, CProgressCtrl& progressCtrl, CStatic& resultStatic, CButton& findButton, CButton& stopButton ) const
{
    switch( message->Protocol )
    {
    case MP_RM_ITEM_SHOP_LOG_ACK:
    {
        const MSG_RM_ITEM_SHOP_LOG* m = ( MSG_RM_ITEM_SHOP_LOG* )message;

        if( m->mRequestTick != mTickCount )
        {
            break;
        }

        // 080401 LUJ, 이전 로그에 대한 인덱스 세트를 만들어 중복되지 않도록 체크한다
        std::set< DWORD > indexSet;
        {
            for( int row = 0; row < listCtrl.GetItemCount(); ++row )
            {
                indexSet.insert( _ttoi( listCtrl.GetItemText( row, 0 ) ) );
            }
        }

        for( DWORD i = 0; i < m->mSize; ++i )
        {
            const MSG_RM_ITEM_SHOP_LOG::Log&	data	= m->mLog[ i ];
            const DWORD							row		= listCtrl.GetItemCount();
            int									step	= 0;

            if( indexSet.end() != indexSet.find( data.mIndex ) )
            {
                continue;
            }

            CString text;
            text.Format( _T( "%d" ), data.mIndex );
            listCtrl.InsertItem( row, text, 0 );

            listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mDate ) >( data.mDate ) );
            listCtrl.SetItemText( row, ++step, mApplication.GetText( data.mType ) );

            text.Format( _T( "%d" ), data.mUser.mIndex );
            listCtrl.SetItemText( row, ++step, text );

            listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mUser.mId ) >( data.mUser.mId ) );
            listCtrl.SetItemText( row, ++step, mApplication.GetItemName( data.mItem.mIndex ) );

            text.Format( _T( "%d" ), data.mItem.mDbIndex );
            listCtrl.SetItemText( row, ++step, text );

            text.Format( _T( "%d" ), data.mItem.mQuantity );
            listCtrl.SetItemText( row, ++step, text );
        }

        {
            int minRange;
            int maxRange;
            progressCtrl.GetRange( minRange, maxRange );

            progressCtrl.SetPos( progressCtrl.GetPos() + m->mSize );

            CString text;
            text.Format( _T( "%d/%d" ), progressCtrl.GetPos(), maxRange );
            resultStatic.SetWindowText( text );

            // 080523 LUJ, 버튼 활성화 체크가 정상적으로 되도록 수정함
            if( progressCtrl.GetPos() == maxRange )
            {
                findButton.EnableWindow( TRUE );
                stopButton.EnableWindow( FALSE );
            }
        }

        break;
    }
    case MP_RM_ITEM_SHOP_LOG_SIZE_ACK:
    {
        const MSG_DWORD* m = ( MSG_DWORD* )message;

        const DWORD size = m->dwData;

        CString text;
        text.Format( _T( "0/%d" ), size );

        resultStatic.SetWindowText( text );
        progressCtrl.SetRange32( 0, size );
        progressCtrl.SetPos( 0 );
        findButton.EnableWindow( FALSE );
        stopButton.EnableWindow( TRUE );

        listCtrl.DeleteAllItems();
        break;
    }
    case MP_RM_ITEM_SHOP_LOG_SIZE_NACK:
    {
        CString textThereIsNoResult;
        textThereIsNoResult.LoadString( IDS_STRING1 );
        MessageBox( 0, textThereIsNoResult, _T( "" ), MB_ICONERROR | MB_OK );
        break;
    }
    case MP_RM_ITEM_SHOP_LOG_STOP_ACK:
    {
        findButton.EnableWindow( TRUE );
        stopButton.EnableWindow( FALSE );

        CString textSearchWasStopped;
        textSearchWasStopped.LoadString( IDS_STRING2 );

        MessageBox( 0, textSearchWasStopped, _T( "" ), MB_ICONERROR | MB_OK );
        break;
    }
    case MP_RM_ITEM_SHOP_LOG_NACK_BY_AUTH:
    {
        CString textYouHaveNoAuthority;
        textYouHaveNoAuthority.LoadString( IDS_STRING18 );
        MessageBox( 0, textYouHaveNoAuthority, _T( "" ), MB_OK | MB_ICONERROR );
        break;
    }
    default:
    {
        ASSERT( 0 );
        break;
    }
    }
}
Example #2
0
void CFarmLogCommand::Parse( const MSGROOT* message, CListCtrl& listCtrl, CProgressCtrl& progressCtrl, CStatic& resultStatic, CButton& findButton, CButton& stopButton ) const
{
	switch( message->Protocol )
	{
	case MP_RM_FARM_LOG_ACK:
		{
			// 080401 LUJ, 이전 로그에 대한 인덱스 세트를 만들어 중복되지 않도록 체크한다
			std::set< DWORD > indexSet;
			{
				for( int row = 0; row < listCtrl.GetItemCount(); ++row )
				{
					indexSet.insert( _ttoi( listCtrl.GetItemText( row, 0 ) ) );
				}
			}

			const MSG_RM_FARM_LOG* m = ( MSG_RM_FARM_LOG* )message;

			if( m->mRequestTick != mTickCount )
			{
				break;
			}

			for( DWORD i = 0; i < m->mSize; ++i )
			{
				const MSG_RM_FARM_LOG::Log&	data	= m->mLog[ i ];
				const DWORD					row		= listCtrl.GetItemCount();
				int							step	= 0;

				if( indexSet.end() != indexSet.find( data.mIndex ) )
				{
					continue;
				}

				CString text;
				text.Format( _T( "%d" ), data.mIndex );
				listCtrl.InsertItem( row, text, 0 );

				listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mDate ) >( data.mDate ) );
				listCtrl.SetItemText( row, ++step, mApplication.GetText( FARM_LOG_KIND( data.mKind ) ) );
				
				text.Format( _T( "%d" ), data.mFarmIndex );
				listCtrl.SetItemText( row, ++step, text );

				text.Format( _T( "%d" ), data.mZone );
				listCtrl.SetItemText( row, ++step, text );

				text.Format( _T( "%d" ), data.mPlayerIndex );
				listCtrl.SetItemText( row, ++step, text );

				// 080423 LUJ,	농장 개선 로그일 때는 값에 표시
				//
				//		주의:	로그가 잘못 표시되고 있음. 소스를 고치면 기존 로그가 손상되므로, 복구툴에서 정정함
				//				이에 따라 로그 타입과 실제 표시되는 텍스트가 다를 수 있음
				//
				//		정원 -> 정원, 울타리 -> 축사, 집 -> 울타리, 창고 -> 집, 축사 -> 창고
				if( FARM_LOG_KIND_UPGRADE == data.mKind )
				{
					switch( data.mValue1 )
					{
					case FARM_UPGRADE_LOG_KIND_GARDEN:
						{
							CString textGarden;
							textGarden.LoadString( IDS_STRING368 );

							listCtrl.SetItemText( row, ++step, textGarden );
							break;
						}
					case FARM_UPGRADE_LOG_KIND_FENCE:
						{
							CString textCage;
							textCage.LoadString( IDS_STRING367 );

							listCtrl.SetItemText( row, ++step, textCage );
							break;
						}
					case FARM_UPGRADE_LOG_KIND_HOUSE:
						{
							CString textFence;
							textFence.LoadString( IDS_STRING366 );

							listCtrl.SetItemText( row, ++step, textFence );
							break;
						}
					case FARM_UPGRADE_LOG_KIND_WAREHOUSE:
						{
							CString textHouse;
							textHouse.LoadString( IDS_STRING369 );

							listCtrl.SetItemText( row, ++step, textHouse );
							break;
						}
					case FARM_UPGRADE_LOG_KIND_ANIMALCAGE:
						{
							CString textWarehouse;
							textWarehouse.LoadString( IDS_STRING282 );

							listCtrl.SetItemText( row, ++step, textWarehouse );
							break;
						}
					default:
						{
							listCtrl.SetItemText( row, ++step, _T( "?" ) );
							break;
						}
					}
				}
				else
				{
					text.Format( _T( "%d" ), data.mValue1 );
					listCtrl.SetItemText( row, ++step, text );
				}				

				text.Format( _T( "%d" ), data.mValue2 );
				listCtrl.SetItemText( row, ++step, text );
			}

			{
				int minRange;
				int maxRange;
				progressCtrl.GetRange( minRange, maxRange );

				progressCtrl.SetPos( progressCtrl.GetPos() + m->mSize );

				CString text;
				text.Format( _T( "%d/%d" ), progressCtrl.GetPos(), maxRange );
				resultStatic.SetWindowText( text );

				// 080523 LUJ, 버튼 활성화 체크가 정상적으로 되도록 수정함
				if( progressCtrl.GetPos() == maxRange )
				{
					findButton.EnableWindow( TRUE );
					stopButton.EnableWindow( FALSE );
				}
			}

			break;
		}
	case MP_RM_FARM_LOG_SIZE_ACK:
		{
			const MSG_DWORD* m = ( MSG_DWORD* )message;

			const DWORD size = m->dwData;

			CString text;
			text.Format( _T( "0/%d" ), size );

			resultStatic.SetWindowText( text );
			progressCtrl.SetRange32( 0, size );
			progressCtrl.SetPos( 0 );
			findButton.EnableWindow( FALSE );
			stopButton.EnableWindow( TRUE );

			listCtrl.DeleteAllItems();
			break;
		}
	case MP_RM_FARM_LOG_SIZE_NACK:
		{
			CString textThereIsNoResult;
			textThereIsNoResult.LoadString( IDS_STRING1 );
			MessageBox( 0, textThereIsNoResult, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_FARM_LOG_STOP_ACK:
		{
			findButton.EnableWindow( TRUE );
			stopButton.EnableWindow( FALSE );

			CString textSearchWasStopped;
			textSearchWasStopped.LoadString( IDS_STRING2 );

			MessageBox( 0, textSearchWasStopped, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_FARM_LOG_NACK_BY_AUTH:
		{
			CString textYouHaveNoAuthority;
			textYouHaveNoAuthority.LoadString( IDS_STRING18 );
			MessageBox( 0, textYouHaveNoAuthority, _T( "" ), MB_OK | MB_ICONERROR );
			break;
		}
	default:
		{
			ASSERT( 0 );
			break;
		}
	}
}
void CItemOptionLogCommand::Parse( const MSGROOT* message, CListCtrl& listCtrl, CProgressCtrl& progressCtrl, CStatic& resultStatic, CButton& findButton, CButton& stopButton ) const
{
	switch( message->Protocol )
	{
	case MP_RM_ITEM_OPTION_LOG_GET_ACK:
		{
			// 080401 LUJ, 이전 로그에 대한 인덱스 세트를 만들어 중복되지 않도록 체크한다
			std::set< DWORD > indexSet;
			{
				for( int row = 0; row < listCtrl.GetItemCount(); ++row )
				{
					indexSet.insert( _ttoi( listCtrl.GetItemText( row, 0 ) ) );
				}
			}

			const MSG_RM_ITEM_OPTION_LOG* m = ( MSG_RM_ITEM_OPTION_LOG* )message;

			for( DWORD i = 0; i < m->mSize; ++i )
			{
				const MSG_RM_ITEM_OPTION_LOG::Log& data = m->mLog[ i ];

				const DWORD row		= listCtrl.GetItemCount();
				int			step	= -1;

				if( indexSet.end() != indexSet.find( data.mLogIndex ) )
				{
					continue;
				}

				CString text;
				text.Format( _T( "%d" ), data.mLogIndex );
				listCtrl.InsertItem( row, text, ++step );

				listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mDate ) >( data.mDate ) );

				listCtrl.SetItemText( row, ++step, mApplication.GetText( data.mType ) );

				text.Format( _T( "%d" ), data.mItemDbIndex );
				listCtrl.SetItemText( row, ++step, text );

				{
					const ITEM_OPTION::Reinforce& reinforce = data.mOption.mReinforce;

					text.Format( _T( "%d" ), reinforce.mStrength );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mDexterity );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mVitality );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mIntelligence );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mWisdom );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mLife );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mMana );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mLifeRecovery );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mManaRecovery );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mPhysicAttack );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mPhysicDefence );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mMagicAttack );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), reinforce.mMagicDefence );
					listCtrl.SetItemText( row, ++step, text );

					// 080428 LUJ, 크리티컬 레이트가 이동 속도로 잘못 저장되고 있음
					text.Format( _T( "%d" ), reinforce.mMoveSpeed );
					listCtrl.SetItemText( row, ++step, text );

					// 080428 LUJ, 크리티컬 데미지가 회피로 잘못 저장되고 있음
					text.Format( _T( "%d" ), reinforce.mEvade );
					listCtrl.SetItemText( row, ++step, text );

					// 080428 LUJ, 이동 속도가 명중으로 잘못 저장되고 있음. 
					text.Format( _T( "%d" ), reinforce.mAccuracy );
					listCtrl.SetItemText( row, ++step, text );

					// 080428 LUJ, 회피가 크리티컬 레이트로 잘못 저장되고 있음
					text.Format( _T( "%d" ), reinforce.mCriticalRate );
					listCtrl.SetItemText( row, ++step, text );

					// 080428 LUJ, 명중이 크리티컬 데미지로 잘못 저장되고 있음
					text.Format( _T( "%d" ), reinforce.mCriticalDamage );
					listCtrl.SetItemText( row, ++step, text );
				}

				{
					const ITEM_OPTION::Mix& mix = data.mOption.mMix;

					text.Format( _T( "%d" ), mix.mStrength );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), mix.mIntelligence );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), mix.mDexterity );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), mix.mWisdom );
					listCtrl.SetItemText( row, ++step, text );

					text.Format( _T( "%d" ), mix.mVitality );
					listCtrl.SetItemText( row, ++step, text );
				}

				{
					const ITEM_OPTION::Enchant& enchant = data.mOption.mEnchant;
					text.Format( _T( "%d" ), enchant.mIndex );
					listCtrl.SetItemText( row, ++step, text );
					text.Format( _T( "%d" ), enchant.mLevel );
					listCtrl.SetItemText( row, ++step, text );
				}

				listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mMemo ) >( data.mMemo ) );
			}

			{
				int minRange;
				int maxRange;
				progressCtrl.GetRange( minRange, maxRange );

				progressCtrl.SetPos( progressCtrl.GetPos() + int( m->mSize ) );

				CString text;
				text.Format( _T( "%d/%d" ), progressCtrl.GetPos(), maxRange );
				resultStatic.SetWindowText( text );

				// 080523 LUJ, 버튼 활성화 체크가 정상적으로 되도록 수정함
				if( progressCtrl.GetPos() == maxRange )
				{
					findButton.EnableWindow( TRUE );
					stopButton.EnableWindow( FALSE );
				}
			}

			break;
		}
	case MP_RM_ITEM_OPTION_LOG_SIZE_ACK:
		{
			const MSG_DWORD* m = ( MSG_DWORD* )message;

			const DWORD size = m->dwData;

			CString text;
			text.Format( _T( "0/%d" ), size );

			resultStatic.SetWindowText( text );
			progressCtrl.SetRange32( 0, size );
			progressCtrl.SetPos( 0 );
			findButton.EnableWindow( FALSE );
			stopButton.EnableWindow( TRUE );

			listCtrl.DeleteAllItems();
			break;
		}
	case MP_RM_ITEM_OPTION_LOG_SIZE_NACK:
		{
			CString textThereIsNoResult;
			textThereIsNoResult.LoadString( IDS_STRING1 );

			MessageBox( 0, textThereIsNoResult, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_ITEM_OPTION_LOG_STOP_ACK:
		{
			findButton.EnableWindow( TRUE );
			stopButton.EnableWindow( FALSE );

			CString textSearchWasStopped;
			textSearchWasStopped.LoadString( IDS_STRING2 );

			MessageBox( 0, textSearchWasStopped, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_ITEM_OPTION_LOG_NACK_BY_AUTH:
		{
			CString textYouHaveNoAuthority;
			textYouHaveNoAuthority.LoadString( IDS_STRING18 );

			MessageBox( 0, textYouHaveNoAuthority, _T( "" ), MB_OK | MB_ICONERROR );
			break;
		}
	default:
		{
			ASSERT( 0 );
			break;
		}
	}
}
void CExperienceLogCommand::Parse( const MSGROOT* message, CListCtrl& listCtrl, CProgressCtrl& progressCtrl, CStatic& resultStatic, CButton& findButton, CButton& stopButton ) const
{
	switch( message->Protocol )
	{
	case MP_RM_EXP_LOG_GET_SIZE_ACK:
		{
			const MSG_DWORD* m = ( MSG_DWORD* )message;

			const DWORD size = m->dwData;

			CString text;
			text.Format( _T( "0/%d" ), size );

			resultStatic.SetWindowText( text );
			progressCtrl.SetRange32( 0, size );
			progressCtrl.SetPos( 0 );
			findButton.EnableWindow( FALSE );
			stopButton.EnableWindow( TRUE );

			listCtrl.DeleteAllItems();
			break;
		}
	case MP_RM_EXP_LOG_GET_SIZE_NACK:
		{			
			CString textThereIsNoResult;

			textThereIsNoResult.LoadString( IDS_STRING1 );

			MessageBox( 0, textThereIsNoResult, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_EXP_LOG_GET_ACK:
		{
			const MSG_RM_EXP_LOG* m = ( MSG_RM_EXP_LOG* )message;
			
			// 080401 LUJ, 이전 로그에 대한 인덱스 세트를 만들어 중복되지 않도록 체크한다
			std::set< DWORD > indexSet;
			{
				for( int row = 0; row < listCtrl.GetItemCount(); ++row )
				{
					indexSet.insert( _ttoi( listCtrl.GetItemText( row, 0 ) ) );
				}
			}

			for( DWORD i = 0; i < m->mSize; ++i )
			{
				const MSG_RM_EXP_LOG::Log&	data	= m->mLog[ i ];
				const DWORD					row		= listCtrl.GetItemCount();
				int							step	= 0;

				if( indexSet.end() != indexSet.find( data.mLogIndex ) )
				{
					continue;
				}

				CString text;
				text.Format( _T( "%d" ), data.mLogIndex );
				listCtrl.InsertItem( row, text, 0 );

				listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mDate ) >( data.mDate ) );

				// 080416 LUJ, 로그 종류를 문자로 표시하도록 함
				listCtrl.SetItemText( row, ++step, mApplication.GetText( data.mType ) );

				text.Format( _T( "%d" ), data.mGrade );
				listCtrl.SetItemText( row, ++step, text );

				text.Format( _T( "%d" ), data.mVariation );
				listCtrl.SetItemText( row, ++step, text );

				// 080716 LUJ, 킬러 종류를 번호로 표시한다
				text.Format( _T( "%d" ), data.mKillerKind );
				listCtrl.SetItemText( row, ++step, text );

				listCtrl.SetItemText( row, ++step, mApplication.GetMonsterName( data.mKillerKind ) );
				
				text.Format( _T( "%d" ), data.mKillerIndex );
				listCtrl.SetItemText( row, ++step, text );

				// 080716 LUJ, 경험치 형이 커져서 실수형으로 변경
				text.Format( _T( "%0.0f" ), data.mExperience );
				listCtrl.SetItemText( row, ++step, text );

				// 080716 LUJ,  로그 상태에 따라 다른 형식으로 표시
				switch( data.mType )
				{
				case eExpLog_ProtectExp:
					{
						CString textProtect;
						textProtect.LoadString( IDS_STRING402 );

						text.Format( _T( "%s: %d" ), textProtect, data.mCount );
						listCtrl.SetItemText( row, ++step, text );
						break;
					}
				}
			}

			{
				int minRange;
				int maxRange;
				progressCtrl.GetRange( minRange, maxRange );

				progressCtrl.SetPos( progressCtrl.GetPos() + int( m->mSize ) );

				CString text;
				text.Format( _T( "%d/%d" ), progressCtrl.GetPos(), maxRange );
				resultStatic.SetWindowText( text );

				// 080523 LUJ, 버튼 활성화 체크가 정상적으로 되도록 수정함
				if( progressCtrl.GetPos() == maxRange )
				{
					findButton.EnableWindow( TRUE );
					stopButton.EnableWindow( FALSE );
				}
			}

			break;
		}
	case MP_RM_EXP_LOG_GET_STOP_ACK:
		{
			findButton.EnableWindow( TRUE );
			stopButton.EnableWindow( FALSE );

			CString textSearchWasStopped;
			textSearchWasStopped.LoadString( IDS_STRING2 );

			MessageBox( 0, textSearchWasStopped, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_EXP_LOG_GET_STOP_NACK:
		{
			ASSERT( 0 );
			break;
		}
	default:
		{
			break;
		}
	}
}
Example #5
0
void CSiegeLogCommand::Parse( const MSGROOT* message, CListCtrl& listCtrl, CProgressCtrl& progressCtrl, CStatic& resultStatic, CButton& findButton, CButton& stopButton ) const
{
	switch( message->Protocol )
	{
	case MP_RM_SIEGE_LOG_ACK:
		{
			// 080401 LUJ, 이전 로그에 대한 인덱스 세트를 만들어 중복되지 않도록 체크한다
			std::set< DWORD > indexSet;
			{
				for( int row = 0; row < listCtrl.GetItemCount(); ++row )
				{
					indexSet.insert( _ttoi( listCtrl.GetItemText( row, 0 ) ) );
				}
			}

			// 081027 LUJ, 메모를 판단해서 적절한 글로 변경한다. 원래 state안의 숫자는
			//			[Map]Server\SiegeWareMgr.h에 선언된 enum 상수이나, 헤더를 참조
			//			하면 컴파일에 문제가 있어 유연성이 없지만 분리했다
			class
			{
			public:
				CString operator()( const CString& text ) const
				{
					if( text == _T( "state:0" ) )
					{
						CString textWait;
						textWait.LoadString( IDS_STRING420 );

						return textWait;
					}
					else if( text == _T( "state:1" ) )
					{
						CString textStart;
						textStart.LoadString( IDS_STRING291 );

						return textStart;
					}
					else if( text == _T( "state:2" ) )
					{
						CString textReady;
						textReady.LoadString( AFX_IDS_IDLEMESSAGE );
						CString textInstall;
						textInstall.LoadString( IDS_STRING418 );
						CString textWaterseed;
						textWaterseed.LoadString( IDS_STRING417 );
					}
					else if( text == _T( "state:3" ) )
					{
						CString textEnd;
						textEnd.LoadString( IDS_STRING292 );

						return textEnd;
					}
					
					return text;
				}
			}
			Translate;

			const MSG_RM_SIEGE_LOG* m = ( MSG_RM_SIEGE_LOG* )message;

			for( DWORD i = 0; i < m->mSize; ++i )
			{
				const MSG_RM_SIEGE_LOG::Log&	data	= m->mLog[ i ];
				const DWORD						row		= listCtrl.GetItemCount();
				int								step	= 0;

				if( indexSet.end() != indexSet.find( data.mIndex ) )
				{
					continue;
				}

				CString text;
				text.Format( _T( "%d" ), data.mIndex );
				listCtrl.InsertItem( row, text, 0 );

				listCtrl.SetItemText( row, ++step, CA2WEX< sizeof( data.mDate ) >( data.mDate ) );

				listCtrl.SetItemText( row, ++step, mApplication.GetText( data.mType ) );

				text.Format( _T( "%d" ), data.mGuildIndex );
				listCtrl.SetItemText( row, ++step, text );

				text.Format( _T( "%d" ), data.mPlayerIndex );
				listCtrl.SetItemText( row, ++step, text );
				
				listCtrl.SetItemText( row, ++step, Translate( CString( data.mMemo ) ) );
			}

			{
				int minRange;
				int maxRange;
				progressCtrl.GetRange( minRange, maxRange );

				progressCtrl.SetPos( progressCtrl.GetPos() + m->mSize );

				CString text;
				text.Format( _T( "%d/%d" ), progressCtrl.GetPos(), maxRange );
				resultStatic.SetWindowText( text );

				// 080523 LUJ, 버튼 활성화 체크가 정상적으로 되도록 수정함
				if( progressCtrl.GetPos() == maxRange )
				{
					findButton.EnableWindow( TRUE );
					stopButton.EnableWindow( FALSE );
				}
			}

			break;
		}
	case MP_RM_SIEGE_LOG_SIZE_ACK:
		{
			const MSG_DWORD* m = ( MSG_DWORD* )message;

			const DWORD size = m->dwData;

			CString text;
			text.Format( _T( "0/%d" ), size );

			resultStatic.SetWindowText( text );
			progressCtrl.SetRange32( 0, size );
			progressCtrl.SetPos( 0 );
			findButton.EnableWindow( FALSE );
			stopButton.EnableWindow( TRUE );

			listCtrl.DeleteAllItems();
			break;
		}
	case MP_RM_SIEGE_LOG_SIZE_NACK:
		{
			CString textThereIsNoResult;
			textThereIsNoResult.LoadString( IDS_STRING1 );
			MessageBox( 0, textThereIsNoResult, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_SIEGE_LOG_STOP_ACK:
		{
			findButton.EnableWindow( TRUE );
			stopButton.EnableWindow( FALSE );

			CString textSearchWasStopped;
			textSearchWasStopped.LoadString( IDS_STRING2 );

			MessageBox( 0, textSearchWasStopped, _T( "" ), MB_ICONERROR | MB_OK );
			break;
		}
	case MP_RM_SIEGE_LOG_NACK_BY_AUTH:
		{
			CString textYouHaveNoAuthority;
			textYouHaveNoAuthority.LoadString( IDS_STRING18 );
			MessageBox( 0, textYouHaveNoAuthority, _T( "" ), MB_OK | MB_ICONERROR );
			break;
		}
	default:
		{
			ASSERT( 0 );
			break;
		}
	}
}