/****************************************************************************

ddecb.cpp

template for DDE callback functions for DDE classes

****************************************************************************/

#include <windows.h>
#include "pdde.h"

HDDEDATA CALLBACK __export DdeServerCallBack(
WORD    wType,              // transaction type
WORD    wFmt,               // clipboard format
HCONV   hConv,              // handle to conversation
HSZ     hsz1,               // string handles
HSZ     hsz2,
HDDEDATA hData,             // handle to a global memory object
DWORD   dwData1,            // transaction-specific data
DWORD   dwData2)
{
    switch(wType)
    {
        case XTYP_ADVREQ:
            // server called PostAdvise
            // hsz1 is topic, hsz2 is item
            // call CreateDataHandle and return new data
            return (HDDEDATA) NULL;

        case XTYP_ADVSTART:
            // client requested advise loop
            // hsz1 topic, hsz2 item
            // return non zero to accept
            return (HDDEDATA) (DWORD) TRUE;

        case XTYP_ADVSTOP:
            return (HDDEDATA) NULL;

        case XTYP_CONNECT:
            // client requested connection
            // return non-zero to accept
            return (HDDEDATA) (DWORD) TRUE;

        case XTYP_CONNECT_CONFIRM:
            return (HDDEDATA) NULL;

        case XTYP_DISCONNECT:
            return (HDDEDATA) NULL;

        case XTYP_ERROR:
            return (HDDEDATA) NULL;

        case XTYP_EXECUTE:
            return (HDDEDATA) NULL;

        case XTYP_POKE:
            // return DDE_FACK for OK, or DDE_FBUSY or DDE_FNOTPROCESSED
            return (HDDEDATA) (DWORD) DDE_FACK;

        case XTYP_REGISTER:
            return (HDDEDATA) NULL;

        case XTYP_REQUEST:
            // hsz1 is topic, hsz2 is item
            // call CreateDataHandle and return new data
            return (HDDEDATA) NULL;

        case XTYP_UNREGISTER:
            return (HDDEDATA) NULL;

        case XTYP_WILDCONNECT:
            return (HDDEDATA) NULL;

        default:
            return (HDDEDATA) NULL;
    }
}


HDDEDATA CALLBACK __export DdeClientCallBack(
WORD    wType,              // transaction type
WORD    wFmt,               // clipboard format
HCONV   hConv,              // handle to conversation
HSZ     hsz1,               // string handles
HSZ     hsz2,
HDDEDATA hData,             // handle to a global memory object
DWORD   dwData1,            // transaction-specific data
DWORD   dwData2)
{
    switch(wType)
    {
        case XTYP_ADVDATA:
            return (HDDEDATA) (DWORD) DDE_FACK;

        case XTYP_DISCONNECT:
            return (HDDEDATA) NULL;

        case XTYP_ERROR:
            return (HDDEDATA) NULL;

        case XTYP_UNREGISTER:
            return (HDDEDATA) NULL;

        case XTYP_XACT_COMPLETE:
            return (HDDEDATA) NULL;

        default:
            return (HDDEDATA) NULL;
    }
}
