⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptbmpfun.cpp

📁 wince下的画图程序
💻 CPP
字号:
#include "StdAfx.h"
#include "PtBmpFun.h"

#include <wingdi.h>
#include "CEPaint.h"

#include <afx.h>

BYTE gBmp_Bits[128 + PT_PIC_BIT_COUNT*PT_PIC_MAX_SIZE_X*PT_PIC_MAX_SIZE_Y]; //16 color ,288 width ,200 height

//////////////////////////////////////////////////////////////////////////

INT CreateDefBmpHeader()
{
    memset(&m_pt_app_info.m_bmp_file_header,0,sizeof(m_pt_app_info.m_bmp_file_header));
	memset(&m_pt_app_info.m_bmp_file_info,0,sizeof(m_pt_app_info.m_bmp_file_info));
 

    m_pt_app_info.m_bmp_file_header.bfType = 0x4d42;

    m_pt_app_info.m_bmp_file_header.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

	INT32 iBMPBytes = (PT_PIC_DEF_SIZE_X * PT_PIC_DEF_SIZE_Y) * PT_PIC_BIT_COUNT;
 
	m_pt_app_info.m_bmp_file_header.bfSize = m_pt_app_info.m_bmp_file_header.bfOffBits + iBMPBytes;

	m_pt_app_info.m_bmp_file_info.bmiHeader.biBitCount = PT_PIC_BIT_COUNT<<3;

    m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight = PT_PIC_DEF_SIZE_Y; 


	m_pt_app_info.m_bmp_file_info.bmiHeader.biPlanes = 1;
	m_pt_app_info.m_bmp_file_info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	m_pt_app_info.m_bmp_file_info.bmiHeader.biSizeImage = iBMPBytes;
	m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth = PT_PIC_DEF_SIZE_X;
	
	return 0;
}

INT LoadBmpFromFile(TCHAR *filename)
{
   HANDLE fh;
   
   fh = CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

   if(INVALID_HANDLE_VALUE == fh)
	   return 1;

   memset(&m_pt_app_info.m_bmp_file_header,0,sizeof(m_pt_app_info.m_bmp_file_header));

   ULONG length = 0;
   ReadFile(fh,&m_pt_app_info.m_bmp_file_header,sizeof(BITMAPFILEHEADER),&length,NULL);

   if(m_pt_app_info.m_bmp_file_header.bfType != 0x4d42)
	   return 2;

   ReadFile(fh,&m_pt_app_info.m_bmp_file_info,sizeof(BITMAPINFO),&length,NULL);
   
   if(m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth > PT_PIC_MAX_SIZE_X || m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight > PT_PIC_MAX_SIZE_Y)
	   return 3;

   if(m_pt_app_info.m_bmp_file_info.bmiHeader.biBitCount != (PT_PIC_BIT_COUNT<<3))
	   return 4;

   if(0xFFFFFFFF == SetFilePointer(fh,m_pt_app_info.m_bmp_file_header.bfOffBits,0,FILE_BEGIN))
	   return 5;

   INT i = 0;
   
   memset(gBmp_Bits,0,sizeof(gBmp_Bits));

  
   i = ReadFile(fh,m_pt_app_info.m_bmp_bits_ptr,m_pt_app_info.m_bmp_file_info.bmiHeader.biSizeImage,&length,NULL);
   //TRACE("LoadFile %d", length);
   TRACE(L"LoadFile %d\n",length);
   return 0;
}


INT LoadBmpToDC(HDC hdc)
{
   INT wd = m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth;
   INT ht = m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight;
   
//    INT i = SetDIBitsToDevice(hdc,0,0,
// 	                         wd,ht,
// 							 0,0,
// 							 0,ht,
// 							 m_pt_app_info.m_bmp_bits_ptr,
// 							 &m_pt_app_info.m_bmp_file_info,
// 							 DIB_RGB_COLORS);
      
   INT i = StretchDIBits(hdc,
	                     0,0,
    	                 wd,ht,
    					 0,0,
    					 wd,ht,
    					 m_pt_app_info.m_bmp_bits_ptr,
    					 &m_pt_app_info.m_bmp_file_info,
 						 DIB_RGB_COLORS,SRCCOPY);

   //i = GetLastError();
   return 0;
}


INT SaveBmpFromDC(HDC hdc)
{
	
// 	INT i = GetDIBits(
// 		               m_pt_app_info.m_pt_backup_hdc,
// 		               m_pt_app_info.m_pt_backup_hbmp,
// 					   0,m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight,
// 					   m_pt_app_info.m_bmp_bits_ptr,
// 					   &m_pt_app_info.m_bmp_file_info,
// 					   DIB_RGB_COLORS);
	
	return 0;
}

INT SaveBmpToFile(TCHAR *filename)
{
	//* Save to File.And Create BITMAPFILEHEADER.
//     BITMAPFILEHEADER bmfh;
//     ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
//     bmfh.bfType = 0x4d42;
// 	
// 	bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
//     
// 	int iBMPBytes = (gBmp_Info_Ref.bmiHeader.biWidth * gBmp_Info_Ref.bmiHeader.biHeight) * 3;
// 
// 	bmfh.bfSize = bmfh.bfOffBits + iBMPBytes;
// 	
//     TCHAR szBMPFileName[32];
//     
// 	strcpy(szBMPFileName,filename);
//     
// 	HANDLE fh = CreateFile(szBMPFileName,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
//     
// 	ULONG length;
// 	INT32 t_color;
// 	
// 	if(INVALID_HANDLE_VALUE == fh)
// 		return 0;
// 	
// 	WriteFile(fh, &bmfh, sizeof(BITMAPFILEHEADER),&length,NULL);
// 	WriteFile(fh, &gBmp_Info_Ref, sizeof(BITMAPINFOHEADER),&length,NULL);
// 	
//  	WriteFile(fh, gBmp_Bits,iBMPBytes,&length,NULL);
// 	   
// 	CloseHandle(fh);
	   
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -