//----------------------------------------------------------------------------- // Does: Open a File And Load It Into IPicture (Interface) // ~~~~ (.BMP .DIB .EMF .GIF .ICO .JPG .WMF) // // InPut: sFilePathName - Path And FileName Target To Save // ~~~~~ // // OutPut: TRUE If Succeeded... // ~~~~~~ //----------------------------------------------------------------------------- BOOL CPicViewer::Load(CString sFilePathName) //============================================================================= { BOOL bResult = FALSE; CFile PictureFile; CFileException e; int nSize = 0; if(m_IPicture != NULL) FreePictureData(); // Important - Avoid Leaks... if(PictureFile.Open(sFilePathName, CFile::modeRead | CFile::typeBinary, &e)) { nSize = PictureFile.GetLength(); BYTE* pBuffer = new BYTE[nSize]; if(PictureFile.Read(pBuffer, nSize) > 0) { // 防止图像文件数据有错(目前的问题是无结束符),导致OleLoadPicture无响应 [6/22/2009 guowenpeng] if ((pBuffer[nSize - 2] != 0xff) || (pBuffer[nSize - 1] != 0xd9)) // 0xffd9: jpeg文件结束标志 { pBuffer[nSize - 2] = 0xff; pBuffer[nSize - 1] = 0xd9; } if(LoadPictureData(pBuffer, nSize)) bResult = TRUE; } PictureFile.Close(); delete [] pBuffer; } else // Open Failed... { TCHAR szCause[255]; e.GetErrorMessage(szCause, 255, NULL); TRACE( "%s\n", szCause ); // HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; // MessageBoxEx(hWnd, szCause, ERROR_TITLE, MB_OK | MB_ICONSTOP, LANG_ENGLISH); bResult = FALSE; } m_Weight = nSize; // Update Picture Size Info... if(m_IPicture != NULL) // Do Not Try To Read From Memory That Is Not Exist... { m_IPicture->get_Height(&m_Height); m_IPicture->get_Width(&m_Width); // Calculate Its Size On a "Standard" (96 DPI) Device Context m_Height = MulDiv(m_Height, 96, HIMETRIC_INCH); m_Width = MulDiv(m_Width, 96, HIMETRIC_INCH); } else // Picture Data Is Not a Known Picture Type { m_Height = 0; m_Width = 0; bResult = FALSE; } return(bResult); }
//----------------------------------------------------------------------------- // Does: Load It Into IPicture (Interface) // ~~~~ (.BMP .DIB .EMF .GIF .ICO .JPG .WMF) // // InPut: Buffer Of Data Source (File / Resource) And Its Size // ~~~~~ // // OutPut: TRUE If Succeeded... // ~~~~~~ //----------------------------------------------------------------------------- BOOL CPicViewer::Load(BYTE *pBuffer, int nSize) //============================================================================= { BOOL bResult = FALSE; if(m_IPicture != NULL) FreePictureData(); // Important - Avoid Leaks... if(LoadPictureData(pBuffer, nSize)) { bResult = TRUE; } m_Weight = nSize; // Update Picture Size Info... if(m_IPicture != NULL) // Do Not Try To Read From Memory That Is Not Exist... { m_IPicture->get_Height(&m_Height); m_IPicture->get_Width(&m_Width); // Calculate Its Size On a "Standard" (96 DPI) Device Context m_Height = MulDiv(m_Height, 96, HIMETRIC_INCH); m_Width = MulDiv(m_Width, 96, HIMETRIC_INCH); } else // Picture Data Is Not a Known Picture Type { m_Height = 0; m_Width = 0; bResult = FALSE; } return(bResult); }
//----------------------------------------------------------------------------- // Does: Open a Resource And Load It Into IPicture (Interface) // ~~~~ (.BMP .DIB .EMF .GIF .ICO .JPG .WMF) // // Note: When Adding a Bitmap Resource It Would Automatically Show On "Bitmap" // ~~~~ This NOT Good Coz We Need To Load It From a Custom Resource "BMP" // To Add a Custom Rresource: Import Resource -> Open As -> Custom // (Both .BMP And .DIB Should Be Found Under "BMP") // // InPut: ResourceName - As a UINT Defined (Example: IDR_PICTURE_RESOURCE) // ~~~~~ ResourceType - Type Name (Example: "JPG") // // OutPut: TRUE If Succeeded... // ~~~~~~ //----------------------------------------------------------------------------- BOOL CPicture_Ex::Load(HINSTANCE hInstance,LPCTSTR lpszResourceName, LPCSTR ResourceType) //============================================================================= { HGLOBAL hGlobal = NULL; HRSRC hSource = NULL; LPVOID lpVoid = NULL; int nSize = 0; BOOL bResult=FALSE; if(m_pPict != NULL) UnloadPicture(); // Important - Avoid Leaks... hSource = FindResource(hInstance, lpszResourceName, ResourceType); if(hSource == NULL) { HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; MessageBoxEx(hWnd, "FindResource() Failed\t", "ERROR"/*ERROR_TITLE*/, MB_OK | MB_ICONSTOP, LANG_ENGLISH); return(FALSE); } hGlobal = LoadResource(hInstance, hSource); if(hGlobal == NULL) { HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; MessageBoxEx(hWnd, "LoadResource() Failed\t", "ERROR"/*ERROR_TITLE*/, MB_OK | MB_ICONSTOP, LANG_ENGLISH); return(FALSE); } lpVoid = LockResource(hGlobal); if(lpVoid == NULL) { HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; MessageBoxEx(hWnd, "LockResource() Failed\t", "ERROR"/*ERROR_TITLE*/, MB_OK | MB_ICONSTOP, LANG_ENGLISH); return(FALSE); } nSize = (UINT)SizeofResource(hInstance, hSource); if(LoadPictureData((BYTE*)hGlobal, nSize)) bResult = TRUE; UnlockResource(hGlobal); // 16Bit Windows Needs This FreeResource(hGlobal); // 16Bit Windows Needs This (32Bit - Automatic Release) return(bResult); }
//////////////////////////////////////////////////////////// // TSprite256Control // ----------------- // void TSprite256Control::BuildBitmapData (const char *name, SHORT remapPlayer) { assert (pUsedColors != NULL); assert (pBitmapData == NULL); BitmapXSize = BitmapYSize = 0; // Initialize pBitmapData and Bitmap size LoadPictureData (name, &pBitmapData, &BitmapXSize, &BitmapYSize, remapPlayer); // assert (pBitmapData != NULL); }
//----------------------------------------------------------------------------- // Does: Open a File And Load It Into IPicture (Interface) // ~~~~ (.BMP .DIB .EMF .GIF .ICO .JPG .WMF) // // InPut: sFilePathName - Path And FileName Target To Save // ~~~~~ // // OutPut: TRUE If Succeeded... // ~~~~~~ //----------------------------------------------------------------------------- BOOL CPicture_Ex::Load(CString sFilePathName) //============================================================================= { //if(!PathFileExists(sFilePathName))return FALSE; /* CFile file; if (!file.Open(sFilePathName, CFile::modeRead/ *|CFile::shareDenyWrite* /)) return FALSE;*/ BOOL bResult = FALSE; CFile PictureFile; CFileException e; int nSize = 0; if(m_pPict != NULL) UnloadPicture(); // Important - Avoid Leaks... if(PictureFile.Open(sFilePathName, CFile::modeRead | CFile::typeBinary, &e)) { nSize = PictureFile.GetLength(); BYTE* pBuffer = new BYTE[nSize]; if(PictureFile.Read(pBuffer, nSize) > 0) { if(LoadPictureData(pBuffer, nSize)) bResult = TRUE; } PictureFile.Close(); delete [] pBuffer; } else // Open Failed... { TCHAR szCause[255]; e.GetErrorMessage(szCause, 255, NULL); HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; MessageBoxEx(hWnd, szCause, "ERROR"/*ERROR_TITLE*/, MB_OK | MB_ICONSTOP, LANG_ENGLISH); bResult = FALSE; } return(bResult); }
//----------------------------------------------------------------------------- // Does: Open a Resource And Load It Into IPicture (Interface) // ~~~~ (.BMP .DIB .EMF .GIF .ICO .JPG .WMF) // // Note: When Adding a Bitmap Resource It Would Automatically Show On "Bitmap" // ~~~~ This NOT Good Coz We Need To Load It From a Custom Resource "BMP" // To Add a Custom Rresource: Import Resource -> Open As -> Custom // (Both .BMP And .DIB Should Be Found Under "BMP") // // InPut: ResourceName - As a UINT Defined (Example: IDR_PICTURE_RESOURCE) // ~~~~~ ResourceType - Type Name (Example: "JPG") // // OutPut: TRUE If Succeeded... // ~~~~~~ //----------------------------------------------------------------------------- BOOL CPicViewer::Load(UINT ResourceName, LPCSTR ResourceType) //============================================================================= { BOOL bResult = FALSE; HGLOBAL hGlobal = NULL; HRSRC hSource = NULL; LPVOID lpVoid = NULL; int nSize = 0; if(m_IPicture != NULL) FreePictureData(); // Important - Avoid Leaks... hSource = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(ResourceName), ResourceType); if(hSource == NULL) { TRACE( "FindResource() Failed\n" ); // HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; // MessageBoxEx(hWnd, "FindResource() Failed\t", ERROR_TITLE, MB_OK | MB_ICONSTOP, LANG_ENGLISH); return(FALSE); } hGlobal = LoadResource(AfxGetResourceHandle(), hSource); if(hGlobal == NULL) { TRACE( "LoadResource() Failed\n" ); // HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; // MessageBoxEx(hWnd, "LoadResource() Failed\t", ERROR_TITLE, MB_OK | MB_ICONSTOP, LANG_ENGLISH); return(FALSE); } lpVoid = LockResource(hGlobal); if(lpVoid == NULL) { TRACE( "LockResource() Failed\n" ); // HWND hWnd = AfxGetApp()->GetMainWnd()->m_hWnd; // MessageBoxEx(hWnd, "LockResource() Failed\t", ERROR_TITLE, MB_OK | MB_ICONSTOP, LANG_ENGLISH); return(FALSE); } nSize = (UINT)SizeofResource(AfxGetResourceHandle(), hSource); if(LoadPictureData((BYTE*)hGlobal, nSize)) bResult = TRUE; UnlockResource(hGlobal); // 16Bit Windows Needs This FreeResource(hGlobal); // 16Bit Windows Needs This (32Bit - Automatic Release) m_Weight = nSize; // Update Picture Size Info... if(m_IPicture != NULL) // Do Not Try To Read From Memory That Is Not Exist... { m_IPicture->get_Height(&m_Height); m_IPicture->get_Width(&m_Width); // Calculate Its Size On a "Standard" (96 DPI) Device Context m_Height = MulDiv(m_Height, 96, HIMETRIC_INCH); m_Width = MulDiv(m_Width, 96, HIMETRIC_INCH); } else // Picture Data Is Not a Known Picture Type { m_Height = 0; m_Width = 0; bResult = FALSE; } return(bResult); }