nie jestem w stanie podac Ci dokladnego odpowiednika, bo nie "widze" jakby tu opakowac dde-owego callbacka tak zeby jakotako pasowal do tego przykladu.. troche luznych snippetow:
na samym poczatku rozpoczynasz prace z DDE:
DWORD id; //identyfikator DDE Twojego programu
DdeInitialize (&id, &DDE_ProcessMessage, APPCMD_CLIENTONLY, 0);
potrzebuje on callbacka obslugujacego wiadomosci DDE, cos ala wndProc tylko dla DDE:
HDDEDATA CALLBACK DDE_ProcessMessage(
UINT uType, UINT uFmt, HCONV hconv,
HDDEDATA hsz1, HDDEDATA hsz2, HDDEDATA hdata,
HDDEDATA dwData1, HDDEDATA dwData2
)
{
// sek w tym ze nie pamietam ciala tej funkcji
}
przygotowujesz sobie identyfikatory:
HANDLE hszServerName = DdeCreateStringHandle (id, "iexplore", 0);
HANDLE hszTopicName = DdeCreateStringHandle (id, "WWW_GetWindowInfo", 0);
HCONV hConversation = DdeConnect(id, hszServerName, hszTopicName, NULL);
potem mozesz wywolac operacje przy ich pomocy, cos w okolicach:
unsigned char buffer[1024];
DWORD dwResult;
HDDEDATA hdd = DdeClientTransaction (
(unsigned char*)"0xFFFFFFFF, sURL, sTitle", 25,
hConversation, NULL, CF_TEXT,
XTYP_???EXECUTE???, TIMEOUT_??ASYNC??, &dwResult);
w wyniku tej operacji dostajesz uchwyt "hdd" pod ktorym siedzi wynik operacji, mozna sie do niego dostac tak:
DWORD size;
BYTE* pointer;
pointer = DdeAccessData(hdd, &size); //pointer - na pierwszy bajt danych, size - ilosc bajtow
i teraz np.
fputs( (char*)pointer, plik);
jak skonczysz uzywac tych danych, musisz wywolac:
DdeUnaccessData(hdd);
ale nie powoduje to utraty teog wyniku i danych! caly czas jeszcze mozesz go Accessowac ponownie. jak juz skonczysz calkiem korzystac z tego wyniku, musisz zwolnic jego uchwyt, zeby bufory DDE nie rosly w nieskonczonosc
DdeFreeDataHandle(hdd);
a jak skonczysz gadac z dana aplikacja-tematem, to zrywasz i zwalniasz kanal komunikacyjny:
DdeDisconnect (hConversation);
a jak konczysz w ogole prace z DDE, to zwalniasz pierwotne zasoby:
DdeFreeStringHandle (id, hszServerName);
DdeFreeStringHandle (id, hszTopicName);
DdeUninitialize (id);
hm.. to tyle co moge teraz powiedziec..