亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pcdmpicture.cpp

?? 《Windows CE 權威指南》(作者:(美)CHRIS MUENCH
?? CPP
字號:
// PCDMPicture.cpp : Implementation of CPCDMPicture

#include "stdafx.h"
#include "PCDMUI.h"
#include "PCDMPicture.h"

/////////////////////////////////////////////////////////////////////////////
// CPCDMPicture


STDMETHODIMP CPCDMPicture::Load(BSTR Path, LONG ResourceID)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

// <BOOK_ADDON STEP6 Chapter 10.1.4> ***********************************
	if (!m_hBitmap)	DeleteObject(m_hBitmap);
	if (!m_lpSrcDIB) free(m_lpSrcDIB);
	if (lstrlen(Path)==0)
		m_hBitmap=LoadBitmap(_Module.m_hInst,MAKEINTRESOURCE(ResourceID));
	else
	{
		switch (ResourceID)
		{
			case 0:	
#ifdef UNDER_CE
				m_hBitmap=SHLoadDIBitmap(Path);
#else
				m_lpSrcDIB=ReadBMPFile(Path,0);
#endif
			  break;
			case -1:
				m_hBitmap=LoadBitmap(_Module.m_hInst,Path);
			  break;
			default:
				m_lpSrcDIB=ReadBMPFile(Path,ResourceID);
			  break;
		}
	}
// </BOOK_ADDON STEP6 Chapter 10.1.4> ***********************************
	return S_OK;
}

LPBYTE CPCDMPicture::ReadBMPFile(LPCTSTR szFileName, DWORD Offset)
{
HANDLE            hFile;
BITMAPFILEHEADER  bfh;
DWORD            	dwBytes;
LPBYTE            lpDIB = NULL, lpTemp = NULL;
WORD              wPaletteSize = 0;
DWORD            	dwBitsSize = 0;

    // Open the file
    if( (hFile=CreateFile( szFileName, GENERIC_READ, 0, NULL,
						  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))
		== INVALID_HANDLE_VALUE )
        return NULL; 
    if( SetFilePointer( hFile, Offset, NULL, FILE_BEGIN ) == 0xffffffff )		
    {
        CloseHandle( hFile );
        return NULL;
    }
    // Read the header
    if((! ReadFile(hFile,&bfh,sizeof(BITMAPFILEHEADER),&dwBytes, NULL)) 
		|| ( dwBytes != sizeof( BITMAPFILEHEADER ) ) )
    {
        CloseHandle( hFile );
        return NULL;
    }
    // Does it look like a BMP file?
    if((bfh.bfType != 0x4d42) || (bfh.bfReserved1!=0) || (bfh.bfReserved2!=0) )
    {
        CloseHandle( hFile );
        return NULL;
    }
    // Allocate memory for DIB
    if( (lpDIB = (LPBYTE) malloc( sizeof( BITMAPINFO ))) == NULL )
    {
        CloseHandle( hFile );
        return NULL;
    }
    // Read in the BITMAPINFOHEADER
    if( (!ReadFile(hFile,lpDIB,sizeof(BITMAPINFOHEADER),&dwBytes,NULL))
		 || (dwBytes!=sizeof(BITMAPINFOHEADER)) )
    {
        CloseHandle( hFile );
        free( lpDIB );
        return NULL;
    }
    if( ((LPBITMAPINFOHEADER)lpDIB)->biSize != 
		sizeof( BITMAPINFOHEADER ) )
    {
        CloseHandle( hFile );
        free( lpDIB );
        return NULL;
    }
    wPaletteSize = PaletteSize((LPSTR)lpDIB);
    dwBitsSize = ((LPBITMAPINFOHEADER)lpDIB)->biHeight * 
				 BytesPerLine((LPBITMAPINFOHEADER)lpDIB);
    // realloc to account for the total size of the DIB
    if( (lpTemp = (LPBYTE)realloc(lpDIB, sizeof( BITMAPINFOHEADER ) + 
		wPaletteSize + dwBitsSize )) == NULL)
    {
        CloseHandle( hFile );
        free( lpDIB );
        return NULL;
    }
    lpDIB = lpTemp;
    // If there is a color table, read it
    if( wPaletteSize != 0 )
    {
        if( (!ReadFile( hFile, ((LPBITMAPINFO)lpDIB)->bmiColors,
			wPaletteSize, &dwBytes, NULL )) 
			|| (dwBytes!=wPaletteSize) )
        {
            CloseHandle( hFile );
            free( lpDIB );
            return NULL;
        }
    }
    if( bfh.bfOffBits != 0 )
    {
        if( SetFilePointer( hFile, bfh.bfOffBits+Offset, NULL, 
			FILE_BEGIN ) == 0xffffffff )
        {
            CloseHandle( hFile );
            free( lpDIB );
            return NULL;
        }
    }
    // Read the image bits
    if( (!ReadFile( hFile, FindDIBBits((LPSTR)lpDIB), dwBitsSize,
		 &dwBytes, NULL )) || (dwBytes!=dwBitsSize) )
    {
        CloseHandle( hFile );
        free( lpDIB );
        return NULL;
    }
    // clean up
    CloseHandle( hFile );
    return lpDIB;
}

LPSTR CPCDMPicture::FindDIBBits( LPSTR lpbi )
{
   return ( lpbi + *(LPDWORD)lpbi + PaletteSize( lpbi ) );
}

WORD CPCDMPicture::DIBNumColors( LPSTR lpbi )
{
    WORD wBitCount;
    DWORD dwClrUsed;

    dwClrUsed = ((LPBITMAPINFOHEADER) lpbi)->biClrUsed;

    if (dwClrUsed)
        return (WORD) dwClrUsed;

    wBitCount = ((LPBITMAPINFOHEADER) lpbi)->biBitCount;

    switch (wBitCount)
    {
        case 1: return 2;
        case 2: return 4;
		case 4: return 16;
        case 8:	return 256;
        default:return 0;
    }
    return 0;
}

WORD CPCDMPicture::PaletteSize( LPSTR lpbi )
{
    return ( DIBNumColors( lpbi ) * sizeof( RGBQUAD ) );
}

DWORD CPCDMPicture::BytesPerLine( LPBITMAPINFOHEADER lpBMIH )
{
    return WIDTHBYTES(lpBMIH->biWidth * lpBMIH->biPlanes 
    * lpBMIH->biBitCount);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一卡二卡三卡日韩欧美| 久久国产精品99久久人人澡| 日韩黄色免费网站| 99久久免费精品高清特色大片| 欧洲一区二区三区在线| 久久久99久久| 久久成人免费网| 欧美色手机在线观看| 国产精品国产三级国产aⅴ入口| 蜜臀精品久久久久久蜜臀 | 不卡的av网站| 精品久久久久久亚洲综合网| 亚洲另类中文字| 丰满白嫩尤物一区二区| 精品国产一区二区亚洲人成毛片 | 国产精品久久一卡二卡| 蜜臀va亚洲va欧美va天堂| 在线精品视频小说1| 国产精品视频一二三区| 国产一区二区久久| 精品99999| 久国产精品韩国三级视频| 欧美乱妇15p| 亚洲在线中文字幕| 在线视频亚洲一区| 亚洲精品国产一区二区三区四区在线| 国产精品12区| 国产精品美女一区二区在线观看| 韩国av一区二区三区四区 | 中文字幕在线不卡| 不卡高清视频专区| 国产精品国产三级国产有无不卡| 国产99精品在线观看| 国产午夜亚洲精品理论片色戒| 麻豆国产精品官网| 久久影音资源网| 国产伦精品一区二区三区在线观看| 日韩午夜在线观看| 国产精品资源在线| 亚洲欧洲日韩女同| 91久久精品网| 日本欧美一区二区三区乱码| 91精品国产一区二区三区| 毛片av一区二区三区| 久久婷婷色综合| 国产精品一区二区不卡| 中文字幕在线不卡视频| 欧美综合久久久| 爽爽淫人综合网网站| 日韩一区二区三区在线| 国产高清成人在线| 一区二区在线观看不卡| 在线成人av网站| 国产乱一区二区| 亚洲卡通欧美制服中文| 欧美一区二区三区系列电影| 国内精品国产三级国产a久久| 中文字幕不卡三区| 在线精品视频免费播放| 久久91精品久久久久久秒播| 日本一区二区三区国色天香| 欧美三级日韩三级| 国产成人在线视频免费播放| 亚洲三级电影全部在线观看高清| 欧美久久一二三四区| 国产高清在线精品| 亚洲成av人片一区二区三区| 久久人人超碰精品| 在线观看日韩电影| 国产成人精品影院| 亚洲一二三区在线观看| 国产午夜亚洲精品不卡| 91精品在线观看入口| 成人激情小说网站| 美脚の诱脚舐め脚责91| 亚洲一区在线观看免费| 久久久国产精品麻豆| 欧美色综合影院| 成人激情开心网| 久久疯狂做爰流白浆xx| 一区二区在线看| 国产精品区一区二区三区| 日韩一区二区三区视频在线| 91丨porny丨国产| 国产久卡久卡久卡久卡视频精品| 一区二区三区不卡视频在线观看| 国产三级一区二区| 日韩精品一区二区三区在线观看 | 国产精品大尺度| 日韩一区二区三区四区五区六区| 日本久久一区二区三区| 国产成人精品影视| 久久99国产精品免费网站| 五月综合激情网| 一区二区三区在线观看视频| 中文字幕国产一区| 久久久五月婷婷| 日韩免费看网站| 日韩欧美高清一区| 欧美美女一区二区| 欧美日韩视频一区二区| 色域天天综合网| 色狠狠一区二区三区香蕉| 成人综合婷婷国产精品久久 | 精彩视频一区二区| 青青草国产精品亚洲专区无| 亚洲午夜影视影院在线观看| 亚洲欧美日韩国产一区二区三区| 国产精品久久久久一区| 国产精品久久久久天堂| 国产精品乱人伦一区二区| 国产精品国产自产拍高清av王其| 欧美激情中文不卡| 中文字幕在线视频一区| 中文字幕一区二区三区在线播放| 中文字幕乱码亚洲精品一区| 欧美国产一区视频在线观看| 国产日韩欧美高清在线| 国产精品久久午夜| 中文字幕欧美一区| 一区二区在线观看视频| 亚洲成av人**亚洲成av**| 视频在线观看国产精品| 精品中文字幕一区二区| 韩日av一区二区| a美女胸又www黄视频久久| 91一区在线观看| 欧美日韩国产123区| 欧美一区二区播放| 久久久91精品国产一区二区精品| 亚洲国产精华液网站w| 最新日韩在线视频| 日日摸夜夜添夜夜添精品视频| 蜜桃在线一区二区三区| 国产999精品久久| 欧美伊人精品成人久久综合97| 欧美精品九九99久久| 久久婷婷一区二区三区| 亚洲欧美区自拍先锋| 日韩国产在线观看一区| 国产一区二区三区日韩| 日本精品视频一区二区三区| 91精品国产全国免费观看| 精品国产自在久精品国产| ㊣最新国产の精品bt伙计久久| 亚洲成人av电影| 国产成人在线视频免费播放| 在线观看国产日韩| 久久精品视频网| 一区二区三区欧美视频| 九九久久精品视频| 色综合一区二区| 日韩精品资源二区在线| 亚洲欧美综合网| 麻豆精品视频在线| 色欧美乱欧美15图片| 欧美mv和日韩mv国产网站| 国产精品久久久久毛片软件| 日韩在线卡一卡二| 北岛玲一区二区三区四区| 欧美日韩综合在线免费观看| 国产午夜精品福利| 日韩国产欧美一区二区三区| 粉嫩一区二区三区在线看 | 欧美日韩一区二区三区在线看| 日韩精品一区二区三区视频播放| 亚洲色图清纯唯美| 国产一区二区中文字幕| 欧美亚洲禁片免费| 综合在线观看色| 国产99精品国产| 欧美成人video| 亚洲va欧美va人人爽午夜| 99久久精品99国产精品 | 日韩欧美国产一二三区| 亚洲一区av在线| av欧美精品.com| 日本一区二区三区国色天香| 久久精品国产亚洲高清剧情介绍| 欧美日韩五月天| 一区二区在线观看免费| 91免费小视频| 国产精品第13页| 成人国产视频在线观看| 久久久精品免费网站| 国产曰批免费观看久久久| 日韩欧美精品在线| 看电视剧不卡顿的网站| 欧美一区二区三区喷汁尤物| 亚洲成a人v欧美综合天堂| 在线视频一区二区免费| 一区二区三区在线播| 色悠悠久久综合| 亚洲一线二线三线视频| 欧美性猛交一区二区三区精品 | 欧美性大战xxxxx久久久| 一区二区三区免费网站| 色美美综合视频| 亚洲高清一区二区三区| 欧美人妖巨大在线|