头文件中:
// MFCWinCEDlg.h : header file
....
private:
CCESeries m_ceSeries;
static void CALLBACK OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen);
static void EnterMFGListen(HWND hRecv,BYTE* buf,int bufLen);//
....源文件:
// MFCWinCEDlg.cpp : implementation file
//
....
//函数EnterMFGListen实现。
void CMFCWinCEDlg::EnterMFGListen(HWND hRecv,BYTE* buf,int bufLen)
{
BYTE buf3[]={0x10,0x01,0xB0,0xA7,0xA6,0x77,0x01,0x00,0x0B,0x00,0x01,0x0B,0x00,0x00,0x10,0x03};
BYTE buf4[]={0x0D};
BYTE bufComplete[]={0x0D,0x0A,0x3C,0x43,0x4F,0x4D,0x50,0x4C,0x45,0x54,0x45,0x3E,0x0D,0x0A,0x3E};//..<COMPLETE>..>
int i=0;
if((buf[11]==0x05)&&(bufLen==16))
{
if(!m_ceSeries.WritePort(buf3,16)) //编译出错地方
{
OutputString(hRecv,L"\r\nSend command failed.");
return;
}
OutputString(hRecv,L"\r\nWaiting for receiver to reboot ...\r\n");
}
if((buf[11]==0x0B)&&(bufLen==16))
{
if(!m_ceSeries.WritePort(buf4,1))//编译出错地方
{
OutputString(hRecv,L"\r\nSend command failed.");
return;
}
}
if(bufLen==15)
{
WriteFlag = nListen;
}
}//函数OnSeriesRead实现
void CMFCWinCEDlg::OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen)
{
CMFCWinCEDlg *pDlg = (CMFCWinCEDlg *)pWnd;
HWND hRecvEdit = ::GetDlgItem(pDlg->m_hWnd, IDC_EDIT_RECV);
int j=0;
int i=0;
int iflag=0;
TCHAR InMFGMode[]=L"In MFG mode";
TCHAR szBuf[2048]={0};
TCHAR szRecv[2048]={0};
for(i=0;i<bufLen;i++)
{
if((buf[i]!='\0')&&(buf[i]>31)&&(buf[i]<127))
{
break;
}
}
for(;i<bufLen;i++)
{
szRecv[j++]=buf[i];
}
szRecv[j]='\0';
if(WriteFlag==nEnterMFG)
{
EnterMFGListen(hRecvEdit,buf,bufLen);//函数调用
}
else
{
OutputString(hRecvEdit,szRecv);
}
}
....错误信息:
1>.\MFCWinCEDlg.cpp(242) : error C2228: left of '.WritePort' must have class/struct/union
1>.\MFCWinCEDlg.cpp(251) : error C2228: left of '.WritePort' must have class/struct/union
// MFCWinCEDlg.h : header file
....
private:
CCESeries m_ceSeries;
static void CALLBACK OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen);
static void EnterMFGListen(HWND hRecv,BYTE* buf,int bufLen);//
....源文件:
// MFCWinCEDlg.cpp : implementation file
//
....
//函数EnterMFGListen实现。
void CMFCWinCEDlg::EnterMFGListen(HWND hRecv,BYTE* buf,int bufLen)
{
BYTE buf3[]={0x10,0x01,0xB0,0xA7,0xA6,0x77,0x01,0x00,0x0B,0x00,0x01,0x0B,0x00,0x00,0x10,0x03};
BYTE buf4[]={0x0D};
BYTE bufComplete[]={0x0D,0x0A,0x3C,0x43,0x4F,0x4D,0x50,0x4C,0x45,0x54,0x45,0x3E,0x0D,0x0A,0x3E};//..<COMPLETE>..>
int i=0;
if((buf[11]==0x05)&&(bufLen==16))
{
if(!m_ceSeries.WritePort(buf3,16)) //编译出错地方
{
OutputString(hRecv,L"\r\nSend command failed.");
return;
}
OutputString(hRecv,L"\r\nWaiting for receiver to reboot ...\r\n");
}
if((buf[11]==0x0B)&&(bufLen==16))
{
if(!m_ceSeries.WritePort(buf4,1))//编译出错地方
{
OutputString(hRecv,L"\r\nSend command failed.");
return;
}
}
if(bufLen==15)
{
WriteFlag = nListen;
}
}//函数OnSeriesRead实现
void CMFCWinCEDlg::OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen)
{
CMFCWinCEDlg *pDlg = (CMFCWinCEDlg *)pWnd;
HWND hRecvEdit = ::GetDlgItem(pDlg->m_hWnd, IDC_EDIT_RECV);
int j=0;
int i=0;
int iflag=0;
TCHAR InMFGMode[]=L"In MFG mode";
TCHAR szBuf[2048]={0};
TCHAR szRecv[2048]={0};
for(i=0;i<bufLen;i++)
{
if((buf[i]!='\0')&&(buf[i]>31)&&(buf[i]<127))
{
break;
}
}
for(;i<bufLen;i++)
{
szRecv[j++]=buf[i];
}
szRecv[j]='\0';
if(WriteFlag==nEnterMFG)
{
EnterMFGListen(hRecvEdit,buf,bufLen);//函数调用
}
else
{
OutputString(hRecvEdit,szRecv);
}
}
....错误信息:
1>.\MFCWinCEDlg.cpp(242) : error C2228: left of '.WritePort' must have class/struct/union
1>.\MFCWinCEDlg.cpp(251) : error C2228: left of '.WritePort' must have class/struct/union
解决方案 »
- 高分求救::重载CStatic类中获取父窗体坐标问题.
- 47068833 超级学习群(最多500人)欢迎新老程序员热情之牛人加入!!!
- 谁能帮忙说明一下IServerXMLHTTPRequestPtr是什么具体怎么使用?
- 在VC6中如何知道内联函数是否展开了?
- 都给点意见!这个问题无确却答案!
- 【公务帖】2003.8.19
- 那位高手知道如何侦测一个文件夹中文件变化的事件?
- 请问怎样才能在列表视图控件(ListCtrl)中查找数据,我用的是报表模式(REPORT),在线等待,回答有分
- 托拽数据的charset问题
- 一个关于字符集的问题
- zmodem协议问题 VC中(vs2005)如何通过串口传输文件(以mp3文件为例)怎么个过程
- 如何得到量化表对DCT后的数据进行量化?
把EnterMFGListen定义为一般成员函数。
EnterMFGListen(hRecvEdit,buf,bufLen);//函数调用
改成pDlg->EnterMFGListen(hRecvEdit,buf,bufLen);
如果我把EnterMFGListen的static去掉,又会出现调用“EnterMFGListen”非法的错误;To:yxz_lp,
原本在.h头文件里是有包含
#include "CESeries.h"
的,在.cpp源文件里没有包含,
看了您的回复,我把.cpp里也加上include “CESeries.h”,但是结果还是一样有错误,并且同样的错误;To:ouyh12345,
那是不是说必须得把m_ceSeries定义为static呢?这样的话,其他的成员函数还能用不?To:cnzdgs ,
等我试完了给你答复,谢谢您的详细回复!
多谢。大家可以简单的介绍一下
public/private/protected中的变量及其函数的用法吗?另外,还有,变量、函数加static和不加都由什么区别?提供一些好的技术网站或者文章都行,
多谢了,
private:只有类的成员函数和其友元可以访问;
protected:该类及其派生所有子孙类的成员函数和友元可以访问。加static定义的成员相当于全局变量或者函数,不依赖于实例指针,该类的所有实例共享同一个成员。静态函数内部没有this指针,如果在静态函数中要访问非静态成员,必须指明类的实例。