Initiating a Data Link
The client initiates a data link by posting a
WM_DDE_ADVISE message, as shown in the following example.
if (!(hOptions = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
sizeof(DDEADVISE))))
return;
if (!(lpOptions = (DDEADVISE FAR*) GlobalLock(hOptions))) {
GlobalFree(hOptions);
return;
}
lpOptions->cfFormat = CF_TEXT;
lpOptions->fAckReq = TRUE;
lpOptions->fDeferUpd = FALSE;
GlobalUnlock(hOptions);
if ((atomItem = GlobalAddAtom(szItemName)) != 0) {
if (!(PostMessage(hwndServerDDE,
WM_DDE_ADVISE,
(WPARAM) hwndClientDDE,
PackDDElParam(WM_DDE_ADVISE, (UINT) hOptions,
atomItem)))) {
GlobalDeleteAtom(atomItem);
GlobalFree(hOptions);
FreeDDElParam(WM_DDE_ADVISE, lParam);
}
}
if (atomItem == 0) {
.
. /* error handling */
.
}
In this example, the client application sets the
fDeferUpd flag of the
WM_DDE_ADVISE message to FALSE. This directs the server application to send the data to the
client whenever the data changes.
If the server is unable to service the WM_DDE_ADVISE request, it sends the
client a negative
WM_DDE_ACK message. But if the server has access to the item and can render it in the
requested format, the server notes the new link (recalling the flags specified in
the
hOptions parameter) and sends the client a positive WM_DDE_ACK message. From then on,
until the client issues a matching
WM_DDE_UNADVISE message, the server sends the new data to the client every time the value of
the item changes in the server.
The WM_DDE_ADVISE message establishes the format of the data to be exchanged
during the link. If the client attempts to establish another link with the same
item but is using a different data format, the server can choose to reject the
second data format or attempt to support it. If a warm link has been
established for any data item, the server can support only one data format at a time.
This is because the
WM_DDE_DATA message for a warm link has a NULL data handle, which otherwise contains the
format information. Thus, a server must reject all warm links for an item
already linked, and must reject all links for an item that has warm links. Another
interpretation may be that the server changes the format and the hot or warm
state of a link when a second link is requested for the same data item.
In general, client applications should not attempt to establish more than one
link at a time for a data item.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database