HRESULT LoadTextureFromRes( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pFileName, UINT Width, UINT Height, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DTEXTURE9 *ppTexture ) { HRESULT hr = E_FAIL; CResFile file; if( file.Open( pFileName, "rb" ) == FALSE ) { LPCTSTR szErr = Error( "::LoadTextureFromRes : %s not found", pFileName ); ADDERRORMSG( szErr ); return E_FAIL; } int nSrcDataSize = file.GetLength(); LPBYTE pSrcData = new BYTE[ nSrcDataSize ]; if( file.Read( pSrcData, nSrcDataSize ) >= 1 ) { hr = D3DXCreateTextureFromFileInMemoryEx( pDevice, pSrcData, nSrcDataSize, Width, Height, MipLevels, Usage, Format, Pool, Filter, MipFilter, ColorKey, pSrcInfo, pPalette, ppTexture ); if( FAILED( hr ) ) { LPCTSTR szErr = Error( "D3DXCreateTextureFromFileInMemoryEx %s %s", pFileName, DXGetErrorString9( hr ) ); ADDERRORMSG( szErr ); } } SAFE_DELETE_ARRAY( pSrcData ); return hr; }
void CWndCredit::OnInitialUpdate() { CWndNeuz::OnInitialUpdate(); // 모래시계로 커서 변경 SetMouseCursor( CUR_DELAY ); // 여기에 코딩하세요 { CResFile file; CString strfile; #ifdef __FOR_PROLOGUE_UPDATE if( ::GetLanguage() != LANG_KOR ) strfile = MakePath( "Theme\\", ::GetLanguage(), _T( "Openning.inc" ) ); #else //__FOR_PROLOGUE_UPDATE if( ::GetLanguage() == LANG_JAP ) strfile = "Theme\\Japanese\\Openning.inc"; #endif //__FOR_PROLOGUE_UPDATE else strfile = "credit.txt"; if( file.Open( strfile.GetBuffer(0), "rb" ) ) { int nLength = file.GetLength(); TCHAR* pChar = new TCHAR[ nLength + 1]; file.Read( pChar, nLength ); pChar[ nLength ] = 0; TCHAR* prog = pChar; m_strArray.RemoveAll(); // while( ( *prog > 0 && *prog <= 0x20 ) && *prog ) // prog++; while( *prog != '\0' ) { TCHAR szString[ 256 ]; TCHAR* temp = szString; while( *prog && ( *prog > 0 && *prog <= 0x20 ) && *prog != '\r' && *prog != '\0' ) prog++; while( *prog!='\r' && *prog!='\0' ) *temp++ = *prog++; if( *prog == '\r') prog++; // skim comma // white space를 스킵 if( temp != szString ) { temp--; while( ( *temp > 0 && *temp <= 0x20 ) && *temp ) temp--; temp++; } *temp = '\0'; m_strArray.Add( szString ); } safe_delete( pChar ); } } m_timerScreenShot.Set( SEC( 10 ) ); if( ::GetLanguage() == LANG_JAP ) { int i; for( i = 0; i < MAX_SCREENSHOT_JAP; i++ ) { CString string; string.Format( "shotCredit%02d.dds", i ); //string = "shotCredit20.dds"; m_aTexScreenShot[ i ].LoadTexture( m_pApp->m_pd3dDevice, MakePath( "Theme\\Japanese\\", string ), 0xffff00ff ); m_aTexScreenShot[ i ].m_size = CSize( 598 + 76, 337 ); } } else { int i; for( i = 0; i < MAX_SCREENSHOT; i++ ) { CString string; string.Format( "shotCredit%02d.dds", i ); //string = "shotCredit20.dds"; m_aTexScreenShot[ i ].LoadTexture( m_pApp->m_pd3dDevice, MakePath( "Theme\\", string ), 0xffff00ff ); m_aTexScreenShot[ i ].m_size = CSize( 598 + 76, 337 ); } } //LoadScreenShot(); //m_pFont->RestoreDeviceObjects();//>InvalidateDeviceObjects(); //m_mapFont.SetAt( _T( "Arial Black9"), pFont ); // 윈도를 중앙으로 옮기는 부분. CRect rectRoot = m_pWndRoot->GetLayoutRect(); CRect rectWindow = GetWindowRect(); CPoint point( rectRoot.right - rectWindow.Width(), 110 ); Move( point ); MoveParentCenter(); if( ::GetLanguage() == LANG_JAP ) { CString filename = MakePath( DIR_SOUND, "VocThePrologue.WAV" ); g_SoundMng.Play( filename.GetBuffer(0), NULL, NULL, FALSE ); m_pSound = g_SoundMng.GetSound( filename.GetBuffer(0) ); m_fOldMusicVolume = GetVolume(); if(m_fOldMusicVolume && m_fOldMusicVolume >= 0.04f) SetVolume(0.04f); m_Starttimer.Set( SEC( 9 ) ); m_bPlayVoice = FALSE; } }