Files
Work/common/DDEMSG.HPP
2024-08-07 09:09:36 -04:00

132 lines
2.9 KiB
C++

#ifndef _COMMON_DDEMESSAGE_HPP_
#define _COMMON_DDEMESSAGE_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_DDE_HPP_
#include <common/dde.hpp>
#endif
#ifndef _COMMON_DDEACK_HPP_
#include <common/ddeack.hpp>
#endif
#ifndef _COMMON_DDEDATA_HPP_
#include <common/ddedata.hpp>
#endif
#ifndef _COMMON_CALLBACK_HPP_
#include <common/callback.hpp>
#endif
class DDEMessage
{
public:
DDEMessage(void);
DDEMessage(HWND hClientWnd,HWND hServerWnd);
~DDEMessage();
void setClient(HWND hClientWnd);
void setServer(HWND hServerWnd);
WORD postTerminate(void);
WORD receiveTerminate(CallbackData &someCallbackData);
WORD sendInitiate(String applicationString,String topicString);
WORD acceptInitiate(String applicationString,String topicString);
WORD postRequest(String requestString);
WORD receiveRequest(CallbackData &someCallbackData,String &requestString);
WORD postAcknowledge(void);
WORD postAcknowledge(DDEAck someDDEAck,String ackDescription);
WORD receiveAcknowledge(CallbackData &someCallbackData);
WORD postData(HGLOBAL hGlobalData,String stringDescription=String());
HGLOBAL receiveData(CallbackData &someCallbackData);
DWORD lastDDEMessage(void)const;
CallbackData lastCallbackData(void)const;
private:
enum {MaxLength=250};
enum Format{TextFormat=CF_TEXT};
enum Mode{Receive,Send,Post};
DDEMessage(const DDEMessage &someDDEMessage);
void cleanup(void);
WORD isValid(void)const;
HGLOBAL buildDDEDataHandle(HGLOBAL hGlobalData);
HGLOBAL copyDDEDataHandle(HGLOBAL hGlobalDDEData);
void examineDDEData(HGLOBAL hGlobalDDEData);
String mStringUnset;
HWND mhServerWnd;
HWND mhClientWnd;
DWORD mLastDDEMessage;
HGLOBAL mhGlobalLastDDEData;
CallbackData mLastCallbackData;
};
inline
DDEMessage::DDEMessage(void)
: mhServerWnd(0), mhClientWnd(0), mLastDDEMessage(0L), mhGlobalLastDDEData(0),
mStringUnset("UNSET")
{
}
inline
DDEMessage::DDEMessage(HWND hServerWnd,HWND hClientWnd)
: mhServerWnd(hServerWnd), mhClientWnd(hClientWnd), mLastDDEMessage(0L),
mhGlobalLastDDEData(0), mStringUnset("UNSET")
{
}
inline
DDEMessage::DDEMessage(const DDEMessage &/*someDDEMessage*/)
{
}
inline
DDEMessage::~DDEMessage()
{
cleanup();
}
inline
WORD DDEMessage::isValid(void)const
{
if(!::IsWindow(mhClientWnd))return FALSE;
if(!::IsWindow(mhServerWnd))return FALSE;
return TRUE;
}
inline
void DDEMessage::setClient(HWND hClientWnd)
{
mhClientWnd=hClientWnd;
}
inline
void DDEMessage::setServer(HWND hServerWnd)
{
mhServerWnd=hServerWnd;
}
inline
DWORD DDEMessage::lastDDEMessage(void)const
{
return mLastDDEMessage;
}
inline
CallbackData DDEMessage::lastCallbackData(void)const
{
return mLastCallbackData;
}
inline
WORD DDEMessage::postTerminate(void)
{
mLastDDEMessage=WM_DDE_TERMINATE;
return ::PostMessage(mhServerWnd,WM_DDE_TERMINATE,(WPARAM)mhClientWnd,0L);
}
inline
WORD DDEMessage::receiveTerminate(CallbackData &/*someCallbackData*/)
{
return TRUE;
}
#endif