📄 bmpico.cpp
字号:
//+NM Copyright (c) 2003 Qta
#include "stdafx.h"
#include "ITaskMgr.h"
#include "bmpico.h"
static RGBQUAD s_rgb[16];
//----------------------------------------------------------
CBits::CBits ()
{
m_hVDC = NULL;
m_hBmpNow = NULL;
m_hBmpOld = NULL;
m_pBits = NULL;
m_biBitCount = 4;
memset (&s_rgb, 0, sizeof(s_rgb));
s_rgb[0].rgbBlue = 0; //0:Black
s_rgb[0].rgbGreen = 0;
s_rgb[0].rgbRed = 0;
s_rgb[1].rgbBlue = 0; //1:Red
s_rgb[1].rgbGreen = 0;
s_rgb[1].rgbRed = 128;
s_rgb[2].rgbBlue = 0; //2:Green
s_rgb[2].rgbGreen = 80;
s_rgb[2].rgbRed = 0;
s_rgb[3].rgbBlue = 0; //3:Yellow
s_rgb[3].rgbGreen = 128;
s_rgb[3].rgbRed = 128;
s_rgb[4].rgbBlue = 128; //4:Blue
s_rgb[4].rgbGreen = 0;
s_rgb[4].rgbRed = 0;
s_rgb[5].rgbBlue = 128; //5:Perple
s_rgb[5].rgbGreen = 0;
s_rgb[5].rgbRed = 128;
s_rgb[6].rgbBlue = 0; //6:Green(light)
s_rgb[6].rgbGreen = 255;
s_rgb[6].rgbRed = 0;
s_rgb[7].rgbBlue = 192; //7:Gray
s_rgb[7].rgbGreen = 192;
s_rgb[7].rgbRed = 192;
s_rgb[8].rgbBlue = 208; //8:Gray
s_rgb[8].rgbGreen = 208;
s_rgb[8].rgbRed = 208;
s_rgb[9].rgbBlue = 255; //9:While
s_rgb[9].rgbGreen = 255;
s_rgb[9].rgbRed = 255;
s_rgb[10].rgbBlue = 128; //10:Gray2
s_rgb[10].rgbGreen = 128;
s_rgb[10].rgbRed = 128;
s_rgb[11].rgbBlue = 0; //3:Yellow
s_rgb[11].rgbGreen = 255;
s_rgb[11].rgbRed = 255;
s_rgb[12].rgbBlue = 255; //Perple
s_rgb[12].rgbGreen = 0;
s_rgb[12].rgbRed = 255;
s_rgb[13].rgbBlue = 255; //Blue
s_rgb[13].rgbGreen = 0;
s_rgb[13].rgbRed = 0;
s_rgb[14].rgbBlue = 0; //Red
s_rgb[14].rgbGreen = 0;
s_rgb[14].rgbRed = 255;
s_rgb[15].rgbBlue = 255; //While
s_rgb[15].rgbGreen = 255;
s_rgb[15].rgbRed = 255;
}
//----------------------------------------------------------
CBits::~CBits ()
{
Close ();
}
//----------------------------------------------------------
BOOL CBits::Create (HWND hWnd, HDC hDC, int sx, int sy)
{
Close ();
// 價僢僩儅僢僾峔憿懱傪嶌惉
BITMAPINFO* bi;
bi = (BITMAPINFO*) LocalAlloc (LPTR,
sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 16);
if (bi == NULL)
return FALSE;
// 墶暆偺僶僀僩悢
m_nWidthBytes = WIDTHBYTES(sx * 8);
// 僿僢僟乕忣曬傪嶌惉
memset (&bi->bmiHeader, 0, sizeof(BITMAPINFOHEADER));
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi->bmiHeader.biWidth = sx;
bi->bmiHeader.biHeight = sy;
bi->bmiHeader.biPlanes = 1;
bi->bmiHeader.biBitCount = m_biBitCount;
bi->bmiHeader.biCompression = BI_RGB;
bi->bmiHeader.biSizeImage = m_nWidthBytes * sy;
bi->bmiHeader.biClrUsed = 16;
bi->bmiHeader.biClrImportant= 16;
// 僷儗僢僩忣曬傪嶌惉
memcpy (bi->bmiColors, s_rgb, sizeof(RGBQUAD) * 16);
int iUsage = DIB_RGB_COLORS;
// 價僢僩儅僢僾傪嶌惉
m_hBmpNow = CreateDIBSection (hDC, bi, iUsage,
(void**)&m_pBits, NULL, 0);
// 價僢僩儅僢僾忣曬傪奐曻
LocalFree (bi);
// 價僢僩儅僢僾嶌惉偵幐攕
if (m_hBmpNow == NULL)
return FALSE;
// 屳姺偺俢俠傪嶌惉
m_hVDC = CreateCompatibleDC (hDC);
// 價僢僩儅僢僾傪晅偗傞
m_hBmpOld = (HBITMAP) SelectObject (m_hVDC, m_hBmpNow);
// 價僢僩儅僢僾忣曬傪庢摼
GetObject (m_hBmpNow, sizeof(BITMAP), &m_bm);
return TRUE;
}
//----------------------------------------------------------
void CBits::Close ()
{
if (m_hVDC != NULL) {
if (m_hBmpOld != NULL) {
SelectObject (m_hVDC, m_hBmpOld);
m_hBmpOld = NULL;
}
DeleteDC (m_hVDC);
m_hVDC = NULL;
}
if (m_hBmpNow != NULL) {
DeleteObject (m_hBmpNow);
m_hBmpNow = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -