На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Вводящая Связь Данных



Клиент вводит связь данных почтовым отправления сообщение WM_DDE_ADVISE, как показано в следующем примере.

если (!Возврат (hOptions = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, sizeof(DDEADVISE))));
если (!(lpOptions = (DDEADVISE ДАЛЕКО*) GlobalLock(hOptions))) { GlobalFree(hOptions);
возврат;
}

lpOptions->cfFormat = CF_TEXT;
lpOptions->fAckReq = ИСТИНА;
lpOptions->fDeferUpd = ЛОЖЬ;
GlobalUnlock(hOptions);
если ((atomItem = GlobalAddAtom(szItemName)) != 0) { если (!(PostMessage(hwndServerDDE, WM_DDE_ADVISE, (WPARAM) hwndClientDDE,

PackDDElParam(WM_DDE_ADVISE, (UINT) hOptions, atomItem)))) { GlobalDeleteAtom(atomItem);
GlobalFree(hOptions);
FreeDDElParam(WM_DDE_ADVISE, lParam);
}
}

если (atomItem == 0) {

.
. /* обработка ошибки */
.

}


В этом примере, приложение клиента устанавливает флаг fDeferUpd сообщения WM_DDE_ADVISE в ЛОЖЬ. Это направляет приложение сервера, чтобы посылать данные клиенту всякий раз, когда данные изменяется.
Если сервер - не в состоянии обслужить запрос WM_DDE_ADVISE, он посылает клиенту отрицательное сообщение WM_DDE_ACK. Но если сервер имеет доступ к пункту и может предоставлять это в запрошенном формате, сервер отмечает новую связь (напоминание флагов определялось в параметре hOptions) и посылало клиенту положительное сообщение WM_DDE_ACK. В дальнейшем, пока клиент не выпустит сопоставление сообщения WM_DDE_UNADVISE, сервер посылает новые данные клиенту каждый раз величина изменений пункта в сервере.

Сообщение WM_DDE_ADVISE устанавливает формат данных, которые нужно заменяться в течение связи. Если клиент пытается устанавливать другую связь с тем же пунктом но использовать другой формат данных, сервер может решить отвергать второй формат данных или пытаться поддерживать это. Если теплая связь установлена для любого пункта данных, сервер может поддержать только один формат данных за один раз. Дело в том, что сообщение WM_DDE_DATA для теплой связи имеет НЕДЕЙСТВИТЕЛЬНУЮ ручку данных, какое в противном случае содержит информацию формата. Таким образом, сервер должен отвергнуть все теплые связи для пункта уже связанного, и должен отвергнуть все связи для пункта, что имеет теплые связи. Другая интерпретация может быть в том, что сервер изменяет формат и горячее или теплое состояние связи когда связь секунды требуется для того же пункта данных.

В общих чертах, приложения клиента не должны пытаться устанавливать более, чем один связь за один раз для пункта данных.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz