我拿到一块板子,用vc写了程序,根据控制传输数据到板子上。问题是这样的:为了提高速度,要经过两个步骤:
1. LoadFileToBuffer(LPCSTR FileName,unsigned short *BufferPtr); //repeat 以传输多个文件到Buffer
2. MemToBoardBuffer (unsign short *Buffer)
我现在已知道很多的File,我的文件为bmp文件,可是怎样定义buffer呢?哪位给点提示,最好代码。
1. LoadFileToBuffer(LPCSTR FileName,unsigned short *BufferPtr); //repeat 以传输多个文件到Buffer
2. MemToBoardBuffer (unsign short *Buffer)
我现在已知道很多的File,我的文件为bmp文件,可是怎样定义buffer呢?哪位给点提示,最好代码。
解决方案 »
- 如何快速画网状图
- 跪求关于BP神经网络英文文献及其翻译
- VC做的ActiveX控件放到网页里用,能在本地IE浏览器里正常使用,可是局域网里其它的电脑不能在IE里打开,为什么?
- 求教data time picker
- afxcmn.h是包含什么的头文件呢?!!!
- EnumPrinters(PRINTER_ENUM_LOCAL|PRINTER_ENUM_CONNECTIONS)的问题?
- 如何进行图象转换
- 为什么在win2000下做的MFC程序到win98下执行时,窗口大小会变,怎么解决此问题
- 请问在CPropertySheet中切换各CPropertyPage会引发什么消息???
- 请问如何将unsigned short数据类型转换成BSTR?
- 关于自定义的回调函数
- 一个头文件问题
BITMAPINFOHEADER bmpinfo;
try
{
file.Open("D:\\ToolBar.bmp",CFile::modeRead);
file.Seek(sizeof(BITMAPFILEHEADER),CFile::begin);
file.Read(&bmpinfo,sizeof(BITMAPINFOHEADER ));
CString str;
str.Format("位图文件的长是%d,高%d",bmpinfo.biWidth,bmpinfo.biHeight);
MessageBox(str);
file.Close();
}
catch(CFileException *e)
{
CString str;
str.Format("读取数据失败的原因是:%d",e->m_cause);
MessageBox("str");
file.Abort();
e->Delete();
}
读取数据:
BOOL ReadFile(
HANDLE hFile, //文件的句柄
LPVOID lpBuffer, //用于保存读入数据的一个缓冲区
DWORD nNumberOfBytesToRead, //要读入的字符数
LPDWORD lpNumberOfBytesRead, //从文件中实际读入的字符数
LPOVERLAPPED lpOverlapped //如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须,用这个参数引用一个特殊的结构。该结构定义了一次异步读取操作。否则,应将这个参数设为NULL
);写入数据:
BOOL WriteFile(
HANDLE hFile, //文件的句柄
LPCVOID lpBuffer, //要写入的一个数据缓冲区
DWORD nNumberOfBytesToWrite, //要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的"上一次修改时间"。
LPDWORD lpNumberOfBytesWritten, //实际写入文件的字节数量
LPOVERLAPPED lpOverlapped // OVERLAPPED,倘若在指FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。该结构定义了一次异步写操作。否则,该参数应置为NULL
);
void Write(const void* lpBuf,UINT nCount);
throw (CFileException); lpBuf:指向用户提供的缓冲区,包含将写入文件中的数据nCount:从缓冲区内传输的字节数。对文本模式的文件,回车换行作为一个字符。
如果你对内存有一些想法,不如使用CMemFile,参考:http://baike.360.cn/wiki/item/CMemFile
1.Short LoadFileToBuffer(LPCTSTR FileName,unsigned short× FileBufferPtr)函数注释;LoadFileToBuffer is used to load memory buffer FileBuffer with the desired file.2.Short MenToBoardBuffer(unsigned short* BufferPtr)
函数注释:is used to load the ACtivex control file buffer with a file .我知道大概的函数用途,但是不知道怎么用,主要是不知道第一个buffer是什么,怎么定义在哪里?就是不知道buffer参数的设置。哪位告知一下
LoadImageFileToBuffer("mm.bmp", BufferPtr); //"mm.bmp"我的数据文件对于第一个韩式,这样使用可以吗?但显示错误,不知道为什么
最好先获得各个文件大小
unsigned short *BufferPtr = new unsigned short[10*1024*1024];
LoadFileToBuffer("1.bmp",BufferPtr);
LoadFileToBuffer("2.bmp",BufferPtr);
LoadFileToBuffer("3.bmp",BufferPtr);
LoadFileToBuffer("4.bmp",BufferPtr);
MemToBoardBuffer(BufferPtr);
delete[] BufferPtr;
我这样写对吗?
LONG bitmapsize=1024*768;//位图大小=位图宽X高
BYTE *buf=new BYTE[bitmapsize*10];//内存缓冲区,开辟了10副图像的内存缓冲这样写可否?