- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用VC建立DDE客户端的过程
利用VC建立DDE客户端
利用VC实现DDE客户端或服务器是很棘手的工作,本文主要说明如何利用MSDN “Implementing DDE Using C++ Classes”文档中提供的类实现DDE客户端。
首先下载上述文档的示例代码,将“stddde.h”和“stddde.cpp”拷贝至工程文件目录下并将其添加到工程中。如图1所示。
图 1 添加DDE类文件至工程中
新建以CDDEServer为基类的CMyDDEObject和以CDDEConv为基类的CMyDDEClientConv。在CMyDDEObject头文件中包含“MyDDEClientConv.h”文件,添加CMyDDEClientConv类指针。
class CMyDDEObject : public CDDEServer
{
public:
CMyDDEClientConv *m_pConversation;//传输类指针
}
在CMyDDEObject类中添加以下函数:
void ReceiveData(const char* strItem, const char * StrData);// 处理接收到的数据
BOOL PokeItem(const char* Item, const char * StrData);//向服务器上传数据
BOOL Disconnect();//和服务器断开连接
BOOL RequestItem(const char * Item, CString *pStrData);//向服务器请求数据项
BOOL ConnectServer(const char* Server, const char* Topic);//连接指定的服务器
其实现部分如下:
BOOL CMyDDEObject::ConnectServer(const char *Server, const char *Topic)
{
if (strlen(Server) == 0) {//若服务名称为空,返回
//AfxMessageBox(You must enter a service name);
return FALSE;
}
if (strlen(Topic) == 0) {//若服务主题名称为空,返回
//AfxMessageBox(You must enter a topic name);
return FALSE;
}
Disconnect();//先断开连接
m_pConversation = new CMyDDEClientConv(this);
ASSERT(m_pConversation);
m_pConversation-AddRef();
if (!m_pConversation-ConnectTo(Server, Topic)) {
m_pConversation-Release(); // 若连接失败,释放资源
m_pConversation = NULL;
return FALSE;
}
return TRUE;
}
BOOL CMyDDEObject::RequestItem(const char *Item, CString *pStrData)
{
// 该函数请求一个数据项的值,并请求服务器数据变化时通知客户端
if(pStrData==NULL)//若数据地址空,返回
return FALSE;
if(m_pConversation==NULL)//若传输句柄空,返回
return FALSE;
if (strlen(Item) 0)
{
DWORD dwSize = 0;
void* pData = NULL;
m_pConversation-Request(Item, pData, dwSize);
if (dwSize)
{
*pStrData = (char*)pData;
delete pData;
// 请求通知服务
m_pConversation-Advise(Item);
return TRUE;
}
else
return FALSE;
}
else
return FALSE;
}
BOOL CMyDDEObject::Disconnect()
{
if (m_pConve
您可能关注的文档
最近下载
- 2024年杭州市粮食收储有限公司人员招聘考试题库及答案解析.docx
- 220KV变电站电气二次部分设计毕业设计(论文).doc
- 烧结与球团生产操作与控制知识点4:造球操作造球操作.pptx
- 人力资源服务公司外包员工手册保密制度.docx
- 物理化学 课件第1章 热力学第一定律.ppt VIP
- 沪粤版八年级下册物理全册新质教学课件(配2025年春改版教材).pptx
- 医院培训课件:《穿脱隔离衣》.pptx
- 2006-2020 年全国地震重点监视防御区基本情况统计.pdf
- 2023年陕西国际商贸学院数据科学与大数据技术专业《数据库原理》科目期末试卷B(有答案).docx VIP
- 老子-道德经课件.ppt VIP
文档评论(0)