下动态数据交换技术之永久数据链路
永久数据链路的撤消
永久链路的撤消也是由客户发出,通过向服务器窗口发出WM_DDE_UNADVISE消息通知服务器。服务器首先检查当前对话中是否有与特定项目相对应的链路。如果存在就返回一个WM_DDE_ACK的肯定应答,否则返回否定应答(具体流程参见图1)。对于此永久链路的撤消,首先由客户发出WM_DDE_UNADVISE消息:
ATOM atomItem = GlobalAddAtom(\"Item C\"); // 得到数据项原子标识值
HWND hwndClient = GetSafeHwnd(); // 获取当前窗口的安全句柄
::PostMessage(m_hwndServer, WM_DDE_UNADVISE, (WPARAM)hwndClient, (LPARAM)MAKELONG(0, atomItem)); // 向服务器发送WM_DDE_ADVISE消息
GlobalDeleteAtom(atomItem); // 删除原子
服务器窗口在收到此消息后,首先检查在当前对话中是否有与特定项目相对应的链路,如果存在,在撤消此链路的同时向客户返回肯定的WM_DDE_ACK应答;如果请求撤消的链路已经不存在了,则返回否定应答:
AfxMessageBox(\"客户请求撤消此永久链路!\"); // 反馈信息
// 锁定内存
SERVERADVISE* lpServerAdvise = (SERVERADVISE*)GlobalLock(m_hServerAdvise);
lpServerAdvise-fAdvise = FALSE; // 撤消数据项连接
GlobalUnlock(m_hServerAdvise); // 解锁内存
球队会有公告告知。 if (m_bHaveALink == TRUE)
{
// 返回应答
LONG lDataPack = PackDDElParam(WM_DDE_ACK, (UINT)0x8000, HIWORD(lParam)); // 组合消息参数lParam
::PostMessage((HWND)wParam, WM_DDE_ACK, (WPARAM)m_hwndServer, (LPARAM)lDataPack); // 向客户发送肯定应答
}
else
{
// 组合消息参数lParam
LONG lDataPack = PackDDElParam(WM_DDE_ACK, (UINT)0, HIWORD(lParam));
::PostMessage((HWND)wParam, WM_DDE_ACK, (WPARAM)m_hwndServer, (LPARAM)lDataPack); // 向客户发送肯定应答
}
小结
本文对动态数据交换技术中的永久数据链路的建立和撤消处理方法作了较为详细的介绍,并给出了具体实现代码。通过本文读者可以掌握温数据链路和热数据链路两种永久数据链路的创建和撤消方法。本文所述代码在Windows 2000 Professional下由Microsoft Visual C++ 6.0编译通过。查看本文来源
开封治疗白癜风的医院贵阳男科治疗医院
临沂治疗阳痿
- 重磅!墨尔本顶级私校酝酿新校,学费低很多!华人妈亲述4岁琪一波三折入学过程
- 吉林省500户重点企业已全部解决问题复工复产
- 平安人寿董事长杨铮任职申请人获批
- 《水浒传》中的“阮氏三雄”,苍凉名篇方显草莽本色
- 距离和时间,从来都不是“我爱你”的直接影响
- 为吃榨菜也是拼了?吉利&孚能科技12GWh电池项目动工
- 国际实业(000159.SZ)拟成立五家子公司 拓展能源产品、钢材等业务部门
- 秦海璐一家3;大出游,7岁儿子近照曝光,这段婚姻王新军功不可没
- 银保监会发文规范银行内控管理 夯实信用风险拨备管理基础
- “限韩令”解禁?芒果台电视韩剧《师任堂》,网友坐不住了
- 此兰“花开双色”,花姿端庄优雅,芬芳持久,花开后桐飘满堂
- 《盲战》夜魔侠+飓风解救!安志杰太猛了杨杏超邪魅凶残