diff options
Diffstat (limited to 'svl/source/svdde/ddemlimp.hxx')
-rw-r--r-- | svl/source/svdde/ddemlimp.hxx | 332 |
1 files changed, 166 insertions, 166 deletions
diff --git a/svl/source/svdde/ddemlimp.hxx b/svl/source/svdde/ddemlimp.hxx index fc147d77bb7d..94cef6574c78 100644 --- a/svl/source/svdde/ddemlimp.hxx +++ b/svl/source/svdde/ddemlimp.hxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -34,31 +34,31 @@ #include <ctype.h> #include "ddemlos2.h" -#define DDEMLSERVICETABLE_INISIZE 8 +#define DDEMLSERVICETABLE_INISIZE 8 // Bezeichner der systemglobalen DDEML-Tabelle -#define DDEMLDATA "\\SHAREMEM\\OV_DDEML.DAT" +#define DDEMLDATA "\\SHAREMEM\\OV_DDEML.DAT" // vorlaeufig konstante Tabellengroessen #define CONVTABLECOUNT 2048 /* max count conversations */ #define TRANSTABLECOUNT 2048 /* transactions */ -#define DDEMLAPPCOUNT 16 /* max count simultaniously running */ +#define DDEMLAPPCOUNT 16 /* max count simultaniously running */ /* ddeml (StarDivision) applications */ -#define ST_TERMACKREC 0x8000 /* wird im Conversationhandle gesetzt, */ +#define ST_TERMACKREC 0x8000 /* wird im Conversationhandle gesetzt, */ /* wenn die Partner-App DDE_TERMINATE */ /* bestaetigt hat */ -#define XST_TIMEOUT 17 /* Trans. hat Timeout ueberschritten */ -#define XST_WAITING_ACK 18 /* Trans. wartet auf Acknowledge */ -#define XST_WAITING_ADVDATA 19 /* Trans. wartet auf Advise-Daten */ -#define XST_WAITING_REQDATA 20 /* Trans. wartet auf angeforderte Daten */ +#define XST_TIMEOUT 17 /* Trans. hat Timeout ueberschritten */ +#define XST_WAITING_ACK 18 /* Trans. wartet auf Acknowledge */ +#define XST_WAITING_ADVDATA 19 /* Trans. wartet auf Advise-Daten */ +#define XST_WAITING_REQDATA 20 /* Trans. wartet auf angeforderte Daten */ /* User-Flags DDESTRUCT */ -#define IMP_HDATAAPPOWNED 0x8000 +#define IMP_HDATAAPPOWNED 0x8000 -#define CONVLISTNAME "DdeConvListId" +#define CONVLISTNAME "DdeConvListId" #define XTYPF_MASK (XTYPF_NOBLOCK | XTYPF_NODATA | XTYPF_ACKREQ) @@ -71,14 +71,14 @@ // eines neuen Services gesendet // Params: nPar1: hszBaseServName // nPar2: hszInstServName -#define WM_DDEML_REGISTER WM_USER+1 +#define WM_DDEML_REGISTER WM_USER+1 // Msg: WM_DDEML_UNREGISTER // Empfaenger: wird allen DDEML-Applikationen nach Deregistrierung // eines Services gesendet // Params: nPar1: hszBaseServName // nPar2: hszInstServName -#define WM_DDEML_UNREGISTER WM_USER+2 +#define WM_DDEML_UNREGISTER WM_USER+2 // // @@ -86,58 +86,58 @@ struct ImpHCONV { - HCONV hConvPartner; - HSZ hszPartner; // Name of partner application - HSZ hszServiceReq; // Service name - HSZ hszTopic; // Topic name - USHORT nStatus; // ST_* of conversation - HCONVLIST hConvList; // ConvListId , wenn in ConvList - CONVCONTEXT aConvContext; // Conversation context + HCONV hConvPartner; + HSZ hszPartner; // Name of partner application + HSZ hszServiceReq; // Service name + HSZ hszTopic; // Topic name + USHORT nStatus; // ST_* of conversation + HCONVLIST hConvList; // ConvListId , wenn in ConvList + CONVCONTEXT aConvContext; // Conversation context // private - HWND hWndThis; // 0 == Handle not used - HWND hWndPartner; - PID pidOwner; // PID des DdeManagers, der + HWND hWndThis; // 0 == Handle not used + HWND hWndPartner; + PID pidOwner; // PID des DdeManagers, der // den Conv-Handle erzeugt hat. - USHORT nPrevHCONV; // 0 == no previous hConv or not in list - USHORT nNextHCONV; // 0 == no next hconv or not in list + USHORT nPrevHCONV; // 0 == no previous hConv or not in list + USHORT nNextHCONV; // 0 == no next hconv or not in list }; struct Transaction { - HSZ hszItem; // Item name - USHORT nFormat; // Data format - USHORT nType; // Transaction type (XTYP_*) + HSZ hszItem; // Item name + USHORT nFormat; // Data format + USHORT nType; // Transaction type (XTYP_*) // XTYP_ADVREQ [|XTYPF_NODATA] == Advise-Loop - // [|XTYPF_ACKREQ] + // [|XTYPF_ACKREQ] // XTYP_EXECUTE == laufendes Execute // XTYP_REQUEST // XTYP_POKE // XTYP_ADVSTOP // XTYP_ADVSTART - USHORT nConvst; // Conversation state (XST_*) + USHORT nConvst; // Conversation state (XST_*) // 0 == idle // XST_REQSENT (fuer XTYP_ADVREQ) // XST_TIMEOUT (fuer alle Typen!) // XST_WAITING (alle ausser XTYP_ADVREQ) - USHORT nLastError; // last err in transaction - ULONG nUser; // Userhandle + USHORT nLastError; // last err in transaction + ULONG nUser; // Userhandle // private - HCONV hConvOwner; // 0 == Transaction not used + HCONV hConvOwner; // 0 == Transaction not used }; struct ImpWndProcParams { - HWND hWndReceiver; - MPARAM nPar1; - MPARAM nPar2; + HWND hWndReceiver; + MPARAM nPar1; + MPARAM nPar2; }; struct ImpService { - HSZ hBaseServName; // Basis-Name des Service - HSZ hInstServName; // Basis-Name + DDEML-Server-HWND der App + HSZ hBaseServName; // Basis-Name des Service + HSZ hInstServName; // Basis-Name + DDEML-Server-HWND der App }; class ImpDdeMgr; @@ -146,27 +146,27 @@ class ImpDdeMgr; struct ImpConvWndData { ImpDdeMgr* pThis; - USHORT nRefCount; // Zahl Conversations auf diesem Window + USHORT nRefCount; // Zahl Conversations auf diesem Window }; // systemglobale Daten der Library (liegen in named shared memory) struct ImpDdeMgrData { - ULONG nTotalSize; - ULONG nOffsAppTable; - ULONG nOffsConvTable; - ULONG nOffsTransTable; - USHORT nMaxAppCount; - USHORT nMaxConvCount; - USHORT nMaxTransCount; - USHORT nLastErr; - USHORT nReserved; - USHORT nCurTransCount; - USHORT nCurConvCount; - HWND aAppTable[ 1 ]; // fuer Broadcast-Messages - ImpHCONV aConvTable[ 1 ]; - Transaction aTransTable[ 1 ]; + ULONG nTotalSize; + ULONG nOffsAppTable; + ULONG nOffsConvTable; + ULONG nOffsTransTable; + USHORT nMaxAppCount; + USHORT nMaxConvCount; + USHORT nMaxTransCount; + USHORT nLastErr; + USHORT nReserved; + USHORT nCurTransCount; + USHORT nCurConvCount; + HWND aAppTable[ 1 ]; // fuer Broadcast-Messages + ImpHCONV aConvTable[ 1 ]; + Transaction aTransTable[ 1 ]; }; @@ -178,67 +178,67 @@ class ImpDdeMgr friend void ImpWriteDdeStatus(char*,char*); friend void ImpAddHSZ( HSZ, String& ); - static PSZ AllocAtomName( ATOM hString, ULONG& rBufLen ); + static PSZ AllocAtomName( ATOM hString, ULONG& rBufLen ); static PDDESTRUCT MakeDDEObject( HWND hwnd, ATOM hItemName, USHORT fsStatus, USHORT usFormat, PVOID pabData, ULONG usDataLen ); - static APIRET AllocNamedSharedMem( PPVOID ppBaseAddress, PSZ pName, + static APIRET AllocNamedSharedMem( PPVOID ppBaseAddress, PSZ pName, ULONG nElementSize, ULONG nElementCount ); - HWND hWndServer; - PID pidThis; - PFNCALLBACK pCallback; - ULONG nTransactFilter; - CONVCONTEXT aDefaultContext; - ImpDdeMgrData* pData; - ImpService* pServices; - USHORT nServiceCount; + HWND hWndServer; + PID pidThis; + PFNCALLBACK pCallback; + ULONG nTransactFilter; + CONVCONTEXT aDefaultContext; + ImpDdeMgrData* pData; + ImpService* pServices; + USHORT nServiceCount; - ImpHCONV* pConvTable; // liegt in pData (nicht deleten!) - Transaction* pTransTable; // liegt in pData (nicht deleten!) - HWND* pAppTable; // liegt in pData (nicht deleten!) + ImpHCONV* pConvTable; // liegt in pData (nicht deleten!) + Transaction* pTransTable; // liegt in pData (nicht deleten!) + HWND* pAppTable; // liegt in pData (nicht deleten!) - static ImpHCONV* GetConvTable( ImpDdeMgrData* ); + static ImpHCONV* GetConvTable( ImpDdeMgrData* ); static Transaction* GetTransTable( ImpDdeMgrData* ); - static HWND* GetAppTable( ImpDdeMgrData* ); + static HWND* GetAppTable( ImpDdeMgrData* ); - static HWND NextFrameWin( HENUM hEnum ); - void CreateServerWnd(); - void DestroyServerWnd(); - HWND CreateConversationWnd(); + static HWND NextFrameWin( HENUM hEnum ); + void CreateServerWnd(); + void DestroyServerWnd(); + HWND CreateConversationWnd(); // Fktn. duerfen nur fuer HCONVs aufgerufen werden, die // in der eigenen Applikation erzeugt wurden - static void DestroyConversationWnd( HWND hWndConv ); - static USHORT GetConversationWndRefCount( HWND hWndConv ); - static USHORT IncConversationWndRefCount( HWND hWndConv ); - - MRESULT SrvWndProc(HWND hWnd,ULONG nMsg,MPARAM nPar1,MPARAM nPar2); - MRESULT ConvWndProc(HWND hWnd,ULONG nMsg,MPARAM nPar1,MPARAM nPar2); - void RegisterDDEMLApp(); - void UnregisterDDEMLApp(); - void CleanUp(); - ImpDdeMgrData* InitAll(); - static BOOL MyWinDdePostMsg( HWND, HWND, USHORT, PDDESTRUCT, ULONG ); - void MyInitiateDde( HWND hWndServer, HWND hWndClient, + static void DestroyConversationWnd( HWND hWndConv ); + static USHORT GetConversationWndRefCount( HWND hWndConv ); + static USHORT IncConversationWndRefCount( HWND hWndConv ); + + MRESULT SrvWndProc(HWND hWnd,ULONG nMsg,MPARAM nPar1,MPARAM nPar2); + MRESULT ConvWndProc(HWND hWnd,ULONG nMsg,MPARAM nPar1,MPARAM nPar2); + void RegisterDDEMLApp(); + void UnregisterDDEMLApp(); + void CleanUp(); + ImpDdeMgrData* InitAll(); + static BOOL MyWinDdePostMsg( HWND, HWND, USHORT, PDDESTRUCT, ULONG ); + void MyInitiateDde( HWND hWndServer, HWND hWndClient, HSZ hszService, HSZ hszTopic, CONVCONTEXT* pCC ); - DDEINIT* CreateDDEInitData( HWND hWndDest, HSZ hszService, + DDEINIT* CreateDDEInitData( HWND hWndDest, HSZ hszService, HSZ hszTopic, CONVCONTEXT* pCC ); // wenn pDDEData==0, muss pCC gesetzt sein - HCONV ConnectWithClient( HWND hWndClient, HSZ hszPartner, + HCONV ConnectWithClient( HWND hWndClient, HSZ hszPartner, HSZ hszService, HSZ hszTopic, BOOL bSameInst, DDEINIT* pDDEData, CONVCONTEXT* pCC = 0); - HCONV CheckIncoming( ImpWndProcParams*, ULONG nTransMask, + HCONV CheckIncoming( ImpWndProcParams*, ULONG nTransMask, HSZ& rhszItem ); // fuer Serverbetrieb. Ruft Callback-Fkt fuer alle offenen Advises // auf, deren Owner der uebergebene HCONV ist. // bFreeTransactions==TRUE: loescht die Transaktionen // gibt Anzahl der getrennten Transaktionen zurueck - USHORT SendUnadvises( HCONV hConv, + USHORT SendUnadvises( HCONV hConv, USHORT nFormat, // 0==alle BOOL bFreeTransactions ); - BOOL WaitTransState( + BOOL WaitTransState( Transaction* pTrans, ULONG nTransId, USHORT nNewState, ULONG nTimeout ); @@ -246,142 +246,142 @@ class ImpDdeMgr // DDEML ruft Callback mit XTYP_CONNECT-Transaction nur auf, // wenn die App den angeforderten Service registriert hat // Standardeinstellung: TRUE - BOOL bServFilterOn; + BOOL bServFilterOn; // Fehlercode muss noch systemglobal werden (Atom o. ae.) - static USHORT nLastErrInstance; // wenn 0, dann gilt globaler Fehlercode + static USHORT nLastErrInstance; // wenn 0, dann gilt globaler Fehlercode static ImpDdeMgrData* AccessMgrData(); - static HCONV CreateConvHandle( ImpDdeMgrData* pBase, + static HCONV CreateConvHandle( ImpDdeMgrData* pBase, PID pidOwner, HWND hWndThis, HWND hWndPartner, HSZ hszPartner, HSZ hszServiceReq, HSZ hszTopic, HCONV hPrevHCONV = 0 ); - static HCONV IsConvHandleAvailable( ImpDdeMgrData* pBase ); - static HCONV GetConvHandle( ImpDdeMgrData* pBase, + static HCONV IsConvHandleAvailable( ImpDdeMgrData* pBase ); + static HCONV GetConvHandle( ImpDdeMgrData* pBase, HWND hWndThis, HWND hWndPartner ); - static void FreeConvHandle( ImpDdeMgrData*, HCONV, + static void FreeConvHandle( ImpDdeMgrData*, HCONV, BOOL bDestroyHWndThis = TRUE ); - static ULONG CreateTransaction( ImpDdeMgrData* pBase, + static ULONG CreateTransaction( ImpDdeMgrData* pBase, HCONV hOwner, HSZ hszItem, USHORT nFormat, USHORT nTransactionType ); - static ULONG GetTransaction( ImpDdeMgrData* pBase, + static ULONG GetTransaction( ImpDdeMgrData* pBase, HCONV hOwner, HSZ hszItem, USHORT nFormat ); - static void FreeTransaction( ImpDdeMgrData*, ULONG nTransId ); + static void FreeTransaction( ImpDdeMgrData*, ULONG nTransId ); - BOOL DisconnectAll(); + BOOL DisconnectAll(); // Transaktionen muessen _vor_ den Konversationen geloescht werden! - static void FreeTransactions( ImpDdeMgrData*, HWND hWndThis, + static void FreeTransactions( ImpDdeMgrData*, HWND hWndThis, HWND hWndPartner ); - static void FreeTransactions( ImpDdeMgrData*, HCONV hConvOwner ); + static void FreeTransactions( ImpDdeMgrData*, HCONV hConvOwner ); - static void FreeConversations( ImpDdeMgrData*,HWND hWndThis, + static void FreeConversations( ImpDdeMgrData*,HWND hWndThis, HWND hWndPartner ); - ImpService* GetService( HSZ hszService ); - ImpService* PutService( HSZ hszService ); - void BroadcastService( ImpService*, BOOL bRegistered ); + ImpService* GetService( HSZ hszService ); + ImpService* PutService( HSZ hszService ); + void BroadcastService( ImpService*, BOOL bRegistered ); // rh: Startposition(!) & gefundener Handle static ImpHCONV* GetFirstServer( ImpDdeMgrData*, HCONVLIST, HCONV& rh); static ImpHCONV* GetLastServer( ImpDdeMgrData*, HCONVLIST, HCONV& ); - static BOOL CheckConvListId( HCONVLIST hConvListId ); + static BOOL CheckConvListId( HCONVLIST hConvListId ); - BOOL IsSameInstance( HWND hWnd ); - HSZ GetAppName( HWND hWnd ); + BOOL IsSameInstance( HWND hWnd ); + HSZ GetAppName( HWND hWnd ); // Transactions - MRESULT DdeAck( ImpWndProcParams* pParams ); - MRESULT DdeAdvise( ImpWndProcParams* pParams ); - MRESULT DdeData( ImpWndProcParams* pParams ); - MRESULT DdeExecute( ImpWndProcParams* pParams ); - MRESULT DdeInitiate( ImpWndProcParams* pParams ); - MRESULT DdeInitiateAck( ImpWndProcParams* pParams ); - MRESULT DdePoke( ImpWndProcParams* pParams ); - MRESULT DdeRequest( ImpWndProcParams* pParams ); - MRESULT DdeTerminate( ImpWndProcParams* pParams ); - MRESULT DdeUnadvise( ImpWndProcParams* pParams ); - MRESULT DdeRegister( ImpWndProcParams* pParams ); - MRESULT DdeUnregister( ImpWndProcParams* pParams ); - MRESULT DdeTimeout( ImpWndProcParams* pParams ); - - HDDEDATA Callback( - USHORT nTransactionType, - USHORT nClipboardFormat, - HCONV hConversationHandle, - HSZ hsz1, - HSZ hsz2, + MRESULT DdeAck( ImpWndProcParams* pParams ); + MRESULT DdeAdvise( ImpWndProcParams* pParams ); + MRESULT DdeData( ImpWndProcParams* pParams ); + MRESULT DdeExecute( ImpWndProcParams* pParams ); + MRESULT DdeInitiate( ImpWndProcParams* pParams ); + MRESULT DdeInitiateAck( ImpWndProcParams* pParams ); + MRESULT DdePoke( ImpWndProcParams* pParams ); + MRESULT DdeRequest( ImpWndProcParams* pParams ); + MRESULT DdeTerminate( ImpWndProcParams* pParams ); + MRESULT DdeUnadvise( ImpWndProcParams* pParams ); + MRESULT DdeRegister( ImpWndProcParams* pParams ); + MRESULT DdeUnregister( ImpWndProcParams* pParams ); + MRESULT DdeTimeout( ImpWndProcParams* pParams ); + + HDDEDATA Callback( + USHORT nTransactionType, + USHORT nClipboardFormat, + HCONV hConversationHandle, + HSZ hsz1, + HSZ hsz2, HDDEDATA hData, - ULONG nData1, - ULONG nData2 ); + ULONG nData1, + ULONG nData2 ); - HCONV DdeConnectImp( HSZ hszService,HSZ hszTopic,CONVCONTEXT* pCC); + HCONV DdeConnectImp( HSZ hszService,HSZ hszTopic,CONVCONTEXT* pCC); // connection data - HCONV hCurConv; // wird im DdeInitiateAck gesetzt - HCONVLIST hCurListId; // fuer DdeConnectList - USHORT nPrevConv; // .... "" .... - BOOL bListConnect; + HCONV hCurConv; // wird im DdeInitiateAck gesetzt + HCONVLIST hCurListId; // fuer DdeConnectList + USHORT nPrevConv; // .... "" .... + BOOL bListConnect; // synchr. transaction data - BOOL bInSyncTrans; - ULONG nSyncTransId; - HDDEDATA hSyncResponseData; - ULONG nSyncResponseMsg; // WM_DDE_ACK, WM_DDE_DATA, WM_TIMER + BOOL bInSyncTrans; + ULONG nSyncTransId; + HDDEDATA hSyncResponseData; + ULONG nSyncResponseMsg; // WM_DDE_ACK, WM_DDE_DATA, WM_TIMER // TRUE==nach Ende der synchronen Transaktion eine evtl. benutzte // asynchrone Transaktion beenden (typisch synchroner Request auf // Advise-Loop) - BOOL bSyncAbandonTrans; + BOOL bSyncAbandonTrans; public: ImpDdeMgr(); ~ImpDdeMgr(); - USHORT DdeInitialize( PFNCALLBACK pCallbackProc, ULONG nTransactionFilter ); - USHORT DdeGetLastError(); + USHORT DdeInitialize( PFNCALLBACK pCallbackProc, ULONG nTransactionFilter ); + USHORT DdeGetLastError(); - HCONV DdeConnect( HSZ hszService, HSZ hszTopic, CONVCONTEXT* ); - HCONVLIST DdeConnectList( HSZ hszService, HSZ hszTopic, + HCONV DdeConnect( HSZ hszService, HSZ hszTopic, CONVCONTEXT* ); + HCONVLIST DdeConnectList( HSZ hszService, HSZ hszTopic, HCONVLIST hConvList, CONVCONTEXT* ); - static BOOL DdeDisconnect( HCONV hConv ); - static BOOL DdeDisconnectList( HCONVLIST hConvList ); - static HCONV DdeReconnect(HCONV hConv); - static HCONV DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev); - static USHORT DdeQueryConvInfo(HCONV hConv, ULONG idTrans,CONVINFO* pCI); - static BOOL DdeSetUserHandle(HCONV hConv, ULONG id, ULONG hUser); - BOOL DdeAbandonTransaction( HCONV hConv, ULONG idTransaction); + static BOOL DdeDisconnect( HCONV hConv ); + static BOOL DdeDisconnectList( HCONVLIST hConvList ); + static HCONV DdeReconnect(HCONV hConv); + static HCONV DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev); + static USHORT DdeQueryConvInfo(HCONV hConv, ULONG idTrans,CONVINFO* pCI); + static BOOL DdeSetUserHandle(HCONV hConv, ULONG id, ULONG hUser); + BOOL DdeAbandonTransaction( HCONV hConv, ULONG idTransaction); - BOOL DdePostAdvise( HSZ hszTopic, HSZ hszItem); - BOOL DdeEnableCallback( HCONV hConv, USHORT wCmd); + BOOL DdePostAdvise( HSZ hszTopic, HSZ hszItem); + BOOL DdeEnableCallback( HCONV hConv, USHORT wCmd); - HDDEDATA DdeNameService( HSZ hszService, USHORT afCmd); + HDDEDATA DdeNameService( HSZ hszService, USHORT afCmd); - static HDDEDATA DdeClientTransaction(void* pData, ULONG cbData, + static HDDEDATA DdeClientTransaction(void* pData, ULONG cbData, HCONV hConv, HSZ hszItem, USHORT wFmt, USHORT wType, ULONG dwTimeout, ULONG* pdwResult); // Data handles - HDDEDATA DdeCreateDataHandle( void* pSrc, ULONG cb, ULONG cbOff, + HDDEDATA DdeCreateDataHandle( void* pSrc, ULONG cb, ULONG cbOff, HSZ hszItem, USHORT wFmt, USHORT afCmd); - static BYTE* DdeAccessData(HDDEDATA hData, ULONG* pcbDataSize); - static BOOL DdeUnaccessData(HDDEDATA hData); - static BOOL DdeFreeDataHandle(HDDEDATA hData); + static BYTE* DdeAccessData(HDDEDATA hData, ULONG* pcbDataSize); + static BOOL DdeUnaccessData(HDDEDATA hData); + static BOOL DdeFreeDataHandle(HDDEDATA hData); static HDDEDATA DdeAddData(HDDEDATA hData,void* pSrc,ULONG cb,ULONG cbOff); - static ULONG DdeGetData(HDDEDATA hData,void* pDst,ULONG cbMax,ULONG cbOff); + static ULONG DdeGetData(HDDEDATA hData,void* pDst,ULONG cbMax,ULONG cbOff); // String handles - static HSZ DdeCreateStringHandle( PSZ pStr, int iCodePage); - static ULONG DdeQueryString(HSZ hsz,PSZ pStr,ULONG cchMax,int iCPage); - static BOOL DdeFreeStringHandle( HSZ hsz ); - static BOOL DdeKeepStringHandle( HSZ hsz ); - static int DdeCmpStringHandles(HSZ hsz1, HSZ hsz2); + static HSZ DdeCreateStringHandle( PSZ pStr, int iCodePage); + static ULONG DdeQueryString(HSZ hsz,PSZ pStr,ULONG cchMax,int iCPage); + static BOOL DdeFreeStringHandle( HSZ hsz ); + static BOOL DdeKeepStringHandle( HSZ hsz ); + static int DdeCmpStringHandles(HSZ hsz1, HSZ hsz2); // mit dieser Funktion kann geprueft werden, ob eine // Applikation schon eine DDEML-Instanz angelegt hat. @@ -391,7 +391,7 @@ public: // gibt TRUE zurueck, wenn mind. ein lebender HCONV // von diesem DdeMgr erzeugt wurde - BOOL OwnsConversationHandles(); + BOOL OwnsConversationHandles(); }; // static |