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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bitmap.cpp

?? 該游戲的玩法是允許兩輛光束驅(qū)動的摩托車在游戲屏幕上行駛
?? CPP
字號:
//-----------------------------------------------------------------
// Bitmap Object
// C++ Source - Bitmap.cpp
//-----------------------------------------------------------------

//-----------------------------------------------------------------
// Include Files
//-----------------------------------------------------------------
#include "Bitmap.h"

//-----------------------------------------------------------------
// Bitmap Constructor(s)/Destructor
//-----------------------------------------------------------------
Bitmap::Bitmap()
  : m_hBitmap(NULL), m_iWidth(0), m_iHeight(0)
{
}

// Create a bitmap from a file
Bitmap::Bitmap(HDC hDC, LPTSTR szFileName)
  : m_hBitmap(NULL), m_iWidth(0), m_iHeight(0)
{
  Create(hDC, szFileName);
}

// Create a bitmap from a resource
Bitmap::Bitmap(HDC hDC, UINT uiResID, HINSTANCE hInstance)
  : m_hBitmap(NULL), m_iWidth(0), m_iHeight(0)
{
  Create(hDC, uiResID, hInstance);
}

// Create a blank bitmap from scratch
Bitmap::Bitmap(HDC hDC, int iWidth, int iHeight, COLORREF crColor)
  : m_hBitmap(NULL), m_iWidth(0), m_iHeight(0)
{
  Create(hDC, iWidth, iHeight, crColor);
}

Bitmap::~Bitmap()
{
  Free();
}

//-----------------------------------------------------------------
// Bitmap Helper Methods
//-----------------------------------------------------------------
void Bitmap::Free()
{
  // Delete the bitmap graphics object
  if (m_hBitmap != NULL)
  {
    DeleteObject(m_hBitmap);
    m_hBitmap = NULL;
  }
}

//-----------------------------------------------------------------
// Bitmap General Methods
//-----------------------------------------------------------------
BOOL Bitmap::Create(HDC hDC, LPTSTR szFileName)
{
  // Free any previous bitmap info
  Free();

  // Open the bitmap file
  HANDLE hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  if (hFile == INVALID_HANDLE_VALUE)
    return FALSE;

  // Read the bitmap file header
  BITMAPFILEHEADER  bmfHeader;
  DWORD             dwBytesRead;
  BOOL bOK = ReadFile(hFile, &bmfHeader, sizeof(BITMAPFILEHEADER),
    &dwBytesRead, NULL);
  if ((!bOK) || (dwBytesRead != sizeof(BITMAPFILEHEADER)) ||
    (bmfHeader.bfType != 0x4D42))
  {
    CloseHandle(hFile);
    return FALSE;
  }

  BITMAPINFO* pBitmapInfo = (new BITMAPINFO);
  if (pBitmapInfo != NULL)
  {
    // Read the bitmap info header
    bOK = ReadFile(hFile, pBitmapInfo, sizeof(BITMAPINFOHEADER),
      &dwBytesRead, NULL);
    if ((!bOK) || (dwBytesRead != sizeof(BITMAPINFOHEADER)))
    {
      CloseHandle(hFile);
      Free();
      return FALSE;
    }

    // Store the width and height of the bitmap
    m_iWidth = (int)pBitmapInfo->bmiHeader.biWidth;
    m_iHeight = (int)pBitmapInfo->bmiHeader.biHeight;

    // Get a handle to the bitmap and copy the image bits
    PBYTE pBitmapBits;
    m_hBitmap = CreateDIBSection(hDC, pBitmapInfo, DIB_RGB_COLORS,
      (PVOID*)&pBitmapBits, NULL, 0);
    if ((m_hBitmap != NULL) && (pBitmapBits != NULL))
    {
      SetFilePointer(hFile, bmfHeader.bfOffBits, NULL, FILE_BEGIN);
      bOK = ReadFile(hFile, pBitmapBits, pBitmapInfo->bmiHeader.biSizeImage,
        &dwBytesRead, NULL);
      if (bOK)
        return TRUE;
    }
  }

  // Something went wrong, so cleanup everything
  Free();
  return FALSE;
}

BOOL Bitmap::Create(HDC hDC, UINT uiResID, HINSTANCE hInstance)
{
  // Free any previous DIB info
  Free();

  // Find the bitmap resource
  HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(uiResID), RT_BITMAP);
  if (hResInfo == NULL)
    return FALSE;

  // Load the bitmap resource
  HGLOBAL hMemBitmap = LoadResource(hInstance, hResInfo);
  if (hMemBitmap == NULL)
    return FALSE;

  // Lock the resource and access the entire bitmap image
  PBYTE pBitmapImage = (BYTE*)LockResource(hMemBitmap);
  if (pBitmapImage == NULL)
  {
    FreeResource(hMemBitmap);
    return FALSE;
  }

  // Store the width and height of the bitmap
  BITMAPINFO* pBitmapInfo = (BITMAPINFO*)pBitmapImage;
  m_iWidth = (int)pBitmapInfo->bmiHeader.biWidth;
  m_iHeight = (int)pBitmapInfo->bmiHeader.biHeight;

  // Get a handle to the bitmap and copy the image bits
  PBYTE pBitmapBits;
  m_hBitmap = CreateDIBSection(hDC, pBitmapInfo, DIB_RGB_COLORS,
    (PVOID*)&pBitmapBits, NULL, 0);
  if ((m_hBitmap != NULL) && (pBitmapBits != NULL))
  {
    const PBYTE pTempBits = pBitmapImage + pBitmapInfo->bmiHeader.biSize +
      pBitmapInfo->bmiHeader.biClrUsed * sizeof(RGBQUAD);
    CopyMemory(pBitmapBits, pTempBits, pBitmapInfo->bmiHeader.biSizeImage);

    // Unlock and free the bitmap graphics object
    UnlockResource(hMemBitmap);
    FreeResource(hMemBitmap);
    return TRUE;
  }

  // Something went wrong, so cleanup everything
  UnlockResource(hMemBitmap);
  FreeResource(hMemBitmap);
  Free();
  return FALSE;
}

BOOL Bitmap::Create(HDC hDC, int iWidth, int iHeight, COLORREF crColor)
{
  // Create a blank bitmap
  m_hBitmap = CreateCompatibleBitmap(hDC, iWidth, iHeight);
  if (m_hBitmap == NULL)
    return FALSE;

  // Set the width and height
  m_iWidth = iWidth;
  m_iHeight = iHeight;

  // Create a memory device context to draw on the bitmap
  HDC hMemDC = CreateCompatibleDC(hDC);

  // Create a solid brush to fill the bitmap
  HBRUSH hBrush = CreateSolidBrush(crColor);

  // Select the bitmap into the device context
  HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, m_hBitmap);

  // Fill the bitmap with a solid color
  RECT rcBitmap = { 0, 0, m_iWidth, m_iHeight };
  FillRect(hMemDC, &rcBitmap, hBrush);

  // Cleanup
  SelectObject(hMemDC, hOldBitmap);
  DeleteDC(hMemDC);
  DeleteObject(hBrush);

  return TRUE;
}

void Bitmap::Draw(HDC hDC, int x, int y, BOOL bTrans, COLORREF crTransColor)
{
  if (m_hBitmap != NULL)
  {
    // Create a memory device context for the bitmap
    HDC hMemDC = CreateCompatibleDC(hDC);

    // Select the bitmap into the device context
    HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, m_hBitmap);

    // Draw the bitmap to the destination device context
    if (bTrans)
      TransparentBlt(hDC, x, y, GetWidth(), GetHeight(), hMemDC, 0, 0,
        GetWidth(), GetHeight(), crTransColor);
    else
      BitBlt(hDC, x, y, GetWidth(), GetHeight(), hMemDC, 0, 0, SRCCOPY);

    // Restore and delete the memory device context
    SelectObject(hMemDC, hOldBitmap);
    DeleteDC(hMemDC);
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费看视频在线| 一区二区三区四区精品在线视频| 蜜桃精品在线观看| 欧美日韩精品综合在线| 天天影视网天天综合色在线播放 | 午夜久久电影网| 91精品一区二区三区在线观看| 日日夜夜精品视频免费| 精品动漫一区二区三区在线观看| 国产一区亚洲一区| 国产精品久久久久久妇女6080 | 高清国产一区二区| 日韩理论片中文av| 91麻豆精品国产91久久久资源速度 | 91在线观看美女| 亚洲国产精品麻豆| 精品福利一二区| 91视视频在线观看入口直接观看www| 一区二区在线观看免费| 欧美高清hd18日本| 国产成人av影院| 亚洲制服丝袜在线| 久久久亚洲精品一区二区三区 | 欧美性受xxxx黑人xyx性爽| 美女视频免费一区| 国产精品免费人成网站| 欧美日韩国产在线播放网站| 精品影院一区二区久久久| 中文字幕一区二区日韩精品绯色| 欧美天堂亚洲电影院在线播放| 韩国一区二区三区| 一区二区三区在线观看视频| 久久亚洲捆绑美女| 91黄色免费观看| 国产98色在线|日韩| 亚洲大尺度视频在线观看| 国产欧美一区二区精品性| 欧美日韩三级一区| 成人一区二区视频| 麻豆成人在线观看| 亚洲在线一区二区三区| 国产日韩欧美一区二区三区乱码| 欧美日韩一本到| av中文字幕不卡| 国产在线一区观看| 午夜精品福利一区二区三区蜜桃| 日韩美女视频19| 久久久久久免费网| 日韩一级黄色大片| 欧美性猛交xxxxxxxx| 成人久久视频在线观看| 韩国一区二区视频| 麻豆一区二区在线| 亚洲成a人v欧美综合天堂下载 | 久久这里只精品最新地址| 欧美视频在线观看一区| 99v久久综合狠狠综合久久| 国产在线不卡一区| 美女性感视频久久| 蜜臀av亚洲一区中文字幕| 一个色妞综合视频在线观看| 1区2区3区国产精品| 国产精品国产自产拍高清av王其 | 91精品国产色综合久久久蜜香臀| av电影一区二区| 成人性生交大片免费看中文网站| 六月丁香婷婷色狠狠久久| 日韩在线观看一区二区| 亚洲成av人**亚洲成av**| 亚洲男人天堂一区| 亚洲资源中文字幕| 亚洲国产成人高清精品| 一区二区三区小说| 亚洲一区二区精品3399| 亚洲一区二区三区三| 一区二区三区精品视频| 亚洲精品自拍动漫在线| 亚洲自拍偷拍欧美| 亚洲国产一区在线观看| 午夜国产精品影院在线观看| 视频一区视频二区中文字幕| 美腿丝袜一区二区三区| 精品一区二区三区在线播放| 国产伦精品一区二区三区免费迷 | 欧美成人激情免费网| 日韩一区二区影院| 亚洲精品一线二线三线| 久久这里只精品最新地址| 国产欧美一区二区精品婷婷| 国产精品欧美极品| 亚洲欧美日韩系列| 无码av中文一区二区三区桃花岛| 日韩经典一区二区| 国产乱人伦精品一区二区在线观看| 国产一区 二区| 99视频在线精品| 欧美日韩精品一区视频| 日韩一级片网站| 中文字幕成人网| 尤物在线观看一区| 日本美女一区二区三区视频| 韩国v欧美v亚洲v日本v| 99久久精品国产毛片| 欧美女孩性生活视频| 久久婷婷一区二区三区| 中文字幕亚洲区| 日韩制服丝袜av| 成人激情视频网站| 国产91对白在线观看九色| 欧洲精品一区二区三区在线观看| 日韩一区二区在线观看视频 | 亚洲精品国产无套在线观| 日韩激情一二三区| 国产黑丝在线一区二区三区| av毛片久久久久**hd| 欧美男男青年gay1069videost| 久久先锋影音av鲁色资源网| 亚洲四区在线观看| 另类小说色综合网站| 99re在线精品| 欧美精品一区二区精品网| 亚洲色图在线播放| 精品一区二区三区免费播放| 91首页免费视频| 久久久久久电影| 日本成人中文字幕在线视频 | 午夜精品福利视频网站 | 欧美体内she精高潮| 国产午夜精品在线观看| 调教+趴+乳夹+国产+精品| 97久久精品人人做人人爽50路| 日韩精品一区二区三区三区免费| 悠悠色在线精品| 波多野结衣精品在线| 欧美精品一区二区久久久| 午夜成人在线视频| 91黄色免费版| 综合久久给合久久狠狠狠97色| 激情深爱一区二区| 884aa四虎影成人精品一区| 一区二区三区中文字幕电影| 丰满岳乱妇一区二区三区| 日韩欧美国产午夜精品| 亚洲午夜精品17c| 91麻豆.com| 国产精品国产自产拍在线| 国产成人自拍网| 26uuu国产电影一区二区| 青青青伊人色综合久久| 欧美日韩久久久| 亚洲图片一区二区| 在线亚洲高清视频| 亚洲激情在线激情| 91日韩一区二区三区| 国产精品欧美精品| 播五月开心婷婷综合| 中文字幕电影一区| 成人午夜又粗又硬又大| 欧美激情资源网| 国产精华液一区二区三区| 国产午夜亚洲精品理论片色戒| 国产美女主播视频一区| 久久久久久久久久美女| 国产一区二区导航在线播放| 久久综合色之久久综合| 国产精品综合久久| 日本一区二区综合亚洲| 东方欧美亚洲色图在线| 日本一区二区三区四区| 成人黄色国产精品网站大全在线免费观看| 久久网站热最新地址| 国产91丝袜在线播放0| 亚洲欧洲精品一区二区三区| 成人爱爱电影网址| 一区二区高清视频在线观看| 欧美性猛交xxxx乱大交退制版 | 日韩高清电影一区| 日韩一二三区视频| 国内一区二区在线| 国产精品久久777777| 欧美色大人视频| 麻豆精品国产91久久久久久| 久久亚洲精品国产精品紫薇| 成人免费视频免费观看| 亚洲免费在线看| 欧美日韩高清一区二区| 黄网站免费久久| 综合欧美一区二区三区| 欧美日韩久久久久久| 经典一区二区三区| 国产精品久线观看视频| 欧美亚洲国产怡红院影院| 免费在线观看一区二区三区| 久久精品欧美一区二区三区不卡 | 美女一区二区视频| 国产精品视频在线看| 欧美影视一区二区三区| 美女在线一区二区| 亚洲色图在线视频| 日韩免费一区二区|