MFC下CFile的调用可以修改pBuf的定义吗?该如何解决
MFC下CFile的调用可以修改pBuf的定义吗?
根据孙鑫的vc++写的程序:
然后在调用另存为函数实现文件的保存
这部分功能已经实现
我现在要在此基础上扩展到我自己的应用程序,调用自己的API程序,遇到问题了。
之前我的API程序,都是定义定长的buffer然后调用API函数:xChannelIOWrite(hChannel,uint32_t ulAreaNumber,uint32_t ulOffset,uint32_t ulDataLen,void* pvData, uint32_t ulTimeout);其中 ulDataLen是我定义的buffer的长度void* pvData这个参数就是我定义的数据名,
比如:buffer定义为:unsigned char abWriteIOBuffer[100] = {0};
相应的API函数就是xChannelIOWrite( hChannel,0, 0,100 , abWriteIOBuffer,10)
我现在把两者结合起来时就有问题了,CFile里面buffer是定义的指针形式,我的应用程序是数组的,我把应用程序改了,API调用就返回错误,本人新手指针和数组这块不是很清楚求指教!!
------解决方案--------------------
当然可以用数组,直接传数组的名字
------解决方案--------------------
unsigned char abWriteIOBuffer[100] = {0};
abWriteIOBuffer是栈上的,不用new了
根据孙鑫的vc++写的程序:
- C/C++ code
char *pBuf; DWORD dwFileLen; CFileDialog fileDlg(TRUE); fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0*.jpg\0All File(*.*)\0*.*\0\0"; //fileDlg.m_ofn.lpstrDefExt="doc"; if (IDOK==fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(),CFile::modeRead|CFile::typeBinary); //char *pBuf; //DWORD dwFileLen; dwFileLen=file.GetLength(); pBuf=new char[dwFileLen+1]; pBuf[dwFileLen]=0; file.Read(pBuf,dwFileLen); file.Close(); }
然后在调用另存为函数实现文件的保存
- C/C++ code
CFileDialog fileDlg(FALSE); fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0All File(*.*)\0*.*\0\0"; if (IDOK==fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(),CFile::modeCreate|CFile::modeWrite); file.Write(pBuf,dwFileLen); file.Close(); //MessageBox(pBuf); }
这部分功能已经实现
我现在要在此基础上扩展到我自己的应用程序,调用自己的API程序,遇到问题了。
之前我的API程序,都是定义定长的buffer然后调用API函数:xChannelIOWrite(hChannel,uint32_t ulAreaNumber,uint32_t ulOffset,uint32_t ulDataLen,void* pvData, uint32_t ulTimeout);其中 ulDataLen是我定义的buffer的长度void* pvData这个参数就是我定义的数据名,
比如:buffer定义为:unsigned char abWriteIOBuffer[100] = {0};
相应的API函数就是xChannelIOWrite( hChannel,0, 0,100 , abWriteIOBuffer,10)
我现在把两者结合起来时就有问题了,CFile里面buffer是定义的指针形式,我的应用程序是数组的,我把应用程序改了,API调用就返回错误,本人新手指针和数组这块不是很清楚求指教!!
------解决方案--------------------
当然可以用数组,直接传数组的名字
------解决方案--------------------
unsigned char abWriteIOBuffer[100] = {0};
abWriteIOBuffer是栈上的,不用new了