DdeEnableCallback功能启用或禁用特定会话或由呼叫应用程序当前建立的所有会话的交易。
在禁用会话的事务后,操作系统将该会话的事务放置在与应用程序关联的事务队列中。该应用程序应尽快重新启用会话,以避免丢失排队的事务。
BOOL DdeEnableCallback(
DWORD 【idInst】, | //实例标识符en |
HCONV 【hConv】, | //处理对话 |
UINT 【WCMD】 | //启用或禁用功能代码 |
); |
参数
【idInst】
指定通过先前调用DdeInitialize函数获得的应用程序实例标识符。
【hConv】
标识要启用或禁用的会话。如果此参数为NULL,该函数将影响所有对话。
【WCMD】
指定功能码。此参数可以是以下值之一:
值 | 含义 |
EC_ENABLEALL | 启用指定会话的所有交易。 |
EC_ENABLEONE | 为指定的会话启用一个事务。 |
EC_DISABLE | 禁用指定会话的所有可阻止的交易。 服务器应用程序可以禁用以下事务: XTYP_ADVSTART 客户端应用程序可以禁用以下事务: XTYP_ADVDATA |
EC_QUERYWAITING | 确定任何事务是否在指定会话的队列中。 |
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。
如果【WCMD】参数是EC_QUERYWAITING,并且应用程序事务队列包含一个或多个未处理的未处理事务,返回值为TRUE;否则,它是FALSE。
错误
使用DdeGetLastError函数来检索错误代码,这可能是以下之一:
DMLERR_DLL_NOT_INITIALIZED
DMLERR_NO_ERROR
DMLERR_INVALIDPARAMETER
备注
通过从其动态数据交换(DDE)回调函数返回CBR_BLOCK返回码,应用程序可以禁用特定对话的事务。当您使用DdeEnableCallback功能重新启用会话时,操作系统会生成与会话被禁用时正在进行的事务。
使用EC_QUERYWAITING标志不会更改会话的使能状态,并且不会在调用DdeEnableCallback的上下文中发出事务。
如果使用EC_QUERYWAITING调用DdeEnableCallback,并且返回值为TRUE,则应用程序应尝试快速允许消息处理,从其回调返回或启用回调。这样的结果不能保证随后的回调。使用EC_QUERYWAITING调用DdeEnableCallback可使具有阻止回调的应用程序确定被阻止的会话中是否有任何事务挂起。当然,即使这样的一个调用返回false,应用程序也应该总是及时处理消息。
也可以看看