下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用APipeCom连接点技术实现即时通讯 -VC6开发实例文档说明本文档是对所附属的源代码的补充说明。包含在AMVC文件夹中的项目的主题,是如何使用APipeCom这个组件,实现类似于Activesoft公司的即时通讯软件Active Message 的收发消息功能。当然,使用者也可以使用APipeCom实现更多的功能,例如收发附件,搭建网络游戏平台等等。什么是APipeComAPipeCom是恒创软件公司开发的一个具有网络通信功能的组件,利用它能方便快捷地开发出需要网络通信功能的程序。使用APipeCom的连接点技术,开发人员就根本不必要研究更多的网络Socket底层编程原理,只要有一份A
2、PipeCom的使用说明文档,就可以快速便捷的开发出网络通讯软件。APipeCom使用实例说明本文档所附属的源码,是使用APipeCom在VC6开发环境中实现网络即时通讯,实现了Active Message 的收发消息功能。1.APipeCom组件注册APipeCom是一个Dll组件,执行下面命令即可注册:regsvr32 "D: APipeCom.dll"2.在VC项目中添加一个ATL对象,实现接口。右键单击项目视图区要使用APipeCom组件的项目,选择菜单命令“NEW ATL OBJECT”,首先要使项目提供ATL支持,单击确定。再次选择菜单命令“NEW ATL OB
3、JECT”,选择Object,SimpleObject,单击NEXT,填写一个对象名称,单击确定。这时候项目视图区会增加一个ATL对象,右键单击,选择菜单命令“Implement Interface”,在弹出的类型库中选择APipeCom1.0 Type Library,单击确定,在弹出的接口列表中选择IAMCPrsAddIn,即可实现接口。3创建m_ptrAMSession对象并且登录下面的代码创建了一个m_ptrAMSession对象用于发送消息。IAMConsolPtrIConsolePtr;IAMLoginInfoPtrILoginInfoPtr;tryif (!IConsolePtr
4、.GetInterfacePtr ()HRESULThr;hr = IConsolePtr.CreateInstance( _T("APipeCom.AMConsol") );if (FAILED (hr)_com_error error (hr);CString strError = error.ErrorMessage ();/AfxMessageBox("Create the AMSession object failed!");return;/IConsolePtr->AddRef();catch (_com_error& e)_b
5、str_t bstrtError = e.Description();AfxMessageBox(bstrtError);return ;tryif (!ILoginInfoPtr.GetInterfacePtr ()HRESULThr;hr = ILoginInfoPtr.CreateInstance( _T("APipeCom.AMLoginInfo") );if (FAILED (hr)_com_error error (hr);CString strError = error.ErrorMessage ();/AfxMessageBox("Create t
6、he AMSession object failed!");return ;/ILoginInfoPtr->AddRef();ILoginInfoPtr->put_LoginName( CComBSTR(strLoginName) );ILoginInfoPtr->put_Password( CComBSTR(strPassWord) );ILoginInfoPtr->put_ServerPort( 5001 );catch (_com_error& e)_bstr_t bstrtError = e.Description();AfxMessageBo
7、x(bstrtError);return ;IAMCPrsAddIn*pDisp = NULL;CComObject< CMsg > *m_pMsger;HRESULT hr = CComObject< CMsg >:CreateInstance( &m_pMsger );if (FAILED (hr)CString strMessage = _T("bad");/strMessage.LoadString(IDS_AMPIPEINIT);AfxMessageBox(strMessage);m_pMsger->QueryInterfac
8、e( IID_IDispatch, (void *)&pDisp );if( pDisp = NULL )return;if ( m_ptrAMSession.GetInterfacePtr() )long nResult;m_ptrAMSession->CloseSession( &nResult );m_ptrAMSession.Release();/-/ 连接/-hr = IConsolePtr->CreateSession( ILoginInfoPtr, pDisp, &m_ptrAMSession );if (FAILED (hr)return;l
9、ongnTrID;hr = m_ptrAMSession->ChangeStatus(AM_USERSTATUS_NLN, &nTrID);pDisp->Release();ILoginInfoPtr->put_Server( CComBSTR(strServerName) );ILoginInfoPtr->put_ServerPort( 5001 );catch (_com_error& e)_bstr_t bstrtError = e.Description();AfxMessageBox(bstrtError);return ;IAMCPrsAdd
10、InPtrpDisp ;CComObject< CMsg > *m_pMsger;HRESULT hr = CComObject< CMsg >:CreateInstance( &m_pMsger );if (FAILED (hr)CString strMessage = _T("bad");/strMessage.LoadString(IDS_AMPIPEINIT);AfxMessageBox(strMessage);m_pMsger->QueryInterface( IID_IDispatch, (void *)&pDisp
11、 );if( pDisp = NULL )return;if ( m_ptrAMSession.GetInterfacePtr() )long nResult;m_ptrAMSession->CloseSession( &nResult );m_ptrAMSession.Release();/-/ 连接/-hr = IConsolePtr->NewSession( &m_ptrAMSession );/-/订阅消息类型/-m_ptrAMSession->AddMsgMap( (_bstr_t)_T( "SYSMSG" ), (_bstr_t
12、)_T( "" ), 0, (_bstr_t)_T( "" ), 0 );m_ptrAMSession->AddMsgMap( (_bstr_t)_T( "MSG" ), (_bstr_t)_T( "GEN" ), 0, (_bstr_t)_T( "" ), 0 );if (FAILED (hr)if (FAILED (hr)return;m_ptrAMSession->SingIn( ILoginInfoPtr, m_pMsger , &lReturn );3.消息处理使用
13、接口函数实现与服务器的消息交互。STDMETHODIMP CMsg:OnAMNtyReceive(IAMSysMsg * pSMsg)CComBSTRbszMethod;CStringstrMethod;pSMsg->get_Method(&bszMethod);strMethod = bszMethod;/-/获得在线人员/-if (strMethod = "NLN")CAMMain*AMMainDlg = NULL;AMMainDlg = (CAMMain *)AfxGetApp()->GetMainWnd();if (!AMMainDlg)return E_POINTER;CComBSTRbszLoginName, bszUserName;CStringstrLoginName,strUserName;pSMsg->GetParamStr( 2, &bszLoginName );pSMsg->GetParamStr( 3, &bszUserName );strLoginName = bszLoginName;strUserName = bszUserName;HTREEITEM hRoot = NULL;/-/添加到一个树视图中/-hRoot = AMMainDlg->m_ctlTree
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年一级医院护理工作计划怎么写
- 2025二级建造师b证真题答案详解
- 公司2026年安全生产工作计划
- 2025年聚苯醚(PPO)及合金项目合作计划书
- 第2章 简单事件的概率期末复习(知识清单)(答案版)-浙教版(2024)九上
- 2025年家用空气调节器项目建议书
- 味觉和嗅觉的课件
- 动脉栓塞护理查房
- 2025年便携式地质雷达项目建议书
- 2025年灯具配附件:触点项目发展计划
- 如果历史是一群喵16
- 赫兹伯格-双因素理论
- 华为HCIA存储H13-611认证培训考试题库(汇总)
- 社会主义发展史知到章节答案智慧树2023年齐鲁师范学院
- 美国史智慧树知到答案章节测试2023年东北师范大学
- GB/T 15924-2010锡矿石化学分析方法锡量测定
- GB/T 14525-2010波纹金属软管通用技术条件
- GB/T 11343-2008无损检测接触式超声斜射检测方法
- GB/T 1040.3-2006塑料拉伸性能的测定第3部分:薄膜和薄片的试验条件
- 教师晋级专业知识和能力证明材料
- 申报专业技术职称课件-
评论
0/150
提交评论