コード例 #1
1
ファイル: picviewer.cpp プロジェクト: idandan/DrawLaneDemo
//-----------------------------------------------------------------------------
// 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);
}
コード例 #2
0
ファイル: picviewer.cpp プロジェクト: idandan/DrawLaneDemo
//-----------------------------------------------------------------------------
// 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);
}
コード例 #3
0
ファイル: Picture.cpp プロジェクト: dulton/brpj
//-----------------------------------------------------------------------------
// 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);
}
コード例 #4
0
ファイル: bmp256ct.cpp プロジェクト: Anonic/Meridian59
////////////////////////////////////////////////////////////
// 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);
}
コード例 #5
0
ファイル: Picture.cpp プロジェクト: dulton/brpj
//-----------------------------------------------------------------------------
// 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);
}
コード例 #6
0
ファイル: picviewer.cpp プロジェクト: idandan/DrawLaneDemo
//-----------------------------------------------------------------------------
// 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);
}