用MFC写的COM通信模块,怎样实现组件的数据输出?在线等待!

ISAKEEPER 2003-09-14 09:49:07
用MFC写的COM通信模块,怎样实现组件的数据输出啊(我想在接口一个方法中把组件接收到的以一个自定义结构对象方式来输出,不知怎样来写输出参数,请指点)

void CCommunication::ProcessRecieveMessage() //接口方法的内部实现函数
{
Protocol protocol_rev ;//自定义结构对象
int nReceived = 0;
char Buffer[MAX] ={0};
CString time_back;

nReceived = pSocket->Receive(Buffer,MAX);
if(nReceived == SOCKET_ERROR)
{
AfxMessageBox(GetError(GetLastError()));
}

else if (Buffer[0] =='N') //数据包为正常数据标识
{
memcpy(&protocol_rev,Buffer+1,sizeof(Protocol));//??
CString strData = protocol_rev.Data.YtPara.YtName;
CString stime = protocol_rev.ptime;

AfxMessageBox(strData);
..........................................
}
}
我想把 protocol_rev 对象输出,然后给别人调用,请问怎样实现?
...全文
53 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ISAKEEPER 2003-09-19
  • 打赏
  • 举报
回复
up
ISAKEEPER 2003-09-18
  • 打赏
  • 举报
回复
UP
billik 2003-09-18
  • 打赏
  • 举报
回复
up
ISAKEEPER 2003-09-17
  • 打赏
  • 举报
回复
来人呀,高手们
LuckFox 2003-09-16
  • 打赏
  • 举报
回复
支持!关注!
caodongxiao 2003-09-16
  • 打赏
  • 举报
回复
up
ISAKEEPER 2003-09-16
  • 打赏
  • 举报
回复
//组件内部实现函数
void CCommunication::ProcessRecieveMessage(LPDISPATCH FAR* RecieveData)
{
Protocol * protocol_rev = new Protocol() ;
nReceived = pSocket->Receive(Buffer,MAX);
...........................

else if (Buffer[0] =='N') //数据包为正常数据标识
{
memcpy(protocol_rev,Buffer+1,sizeof(Protocol));//??
CString strData = protocol_rev->Data.YtPara.YtName;
..................
RecieveData = (LPDISPATCH FAR* )protocol_rev ;
delete protocol_rev ;
AfxMessageBox(strData);//这里可以显示出数据
}
}
外部接口方法为:
void GetData(IDispatch** RecieveData);


COM客户端的接收函数
void CCommTestDlg::OnReceive()
{

LPDISPATCH FAR* recievedata = NULL;//是不是这里有问题呢?
m_Comm->GetData(recievedata);
Protocol * protocol_rev = (Protocol*) recievedata;

CString strData = protocol_rev->Data.YtPara.YtName;
AfxMessageBox(strData);//不能显示数据
// RecieveData = (LPDISPATCH FAR* )protocol_rev ;
}
现在在COM客户端不能接收到数据,请大家指点
csdnhbc20 2003-09-15
  • 打赏
  • 举报
回复
COM中的类对象输出要用VARIANT类型,
如果是结构可以直接在参数中定义输出
叶子哟 2003-09-14
  • 打赏
  • 举报
回复
要在参数中输出呀!你这是函数,不是com实现
xiaohedou 2003-09-14
  • 打赏
  • 举报
回复
你这个是COM组建吗?如果是:使用COM的事件和连接点方法!具体的参考《ATL编程指南2》

把 protocol_rev 对象输出:对象、或结构的输出一般由指针完成。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧