#include <stdlib.h>
#include "dde.h"
#include <wintypes.h>
#include "global.h"
#include <win.h>
#define DEBUG_DEFINE_VARIABLES
#define DEBUG_ALL
#include <debug.h>
#define DDE_PROC2WIN(proc_idx) ( (HWND) ~( (proc_idx)+1) )
#define DDE_WIN2PROC(win) ( (int) ~(short) ((win)+1) )
#define DDE_IsRemoteWindow(win) ( (win)<0xffff && (win)>=(0xffff-DDE_PROCS))
char *MessageTypeNames[0x400]={NULL};
char *dummy_store_for_debug_msg_name;
ldt_copy_entry ldt_copy[LDT_SIZE];
int LDT_GetEntry( int entry, ldt_entry *content )
{
return 0;
}
int LDT_SetEntry( int entry, ldt_entry const *content )
void dummy_usage_of_debug_msg_name()
dummy_store_for_debug_msg_name=debug_msg_name[0];
/* stub */
HWND GetDesktopWindow()
printf("GetDesktopWindow\n");
/* smart stub */
LONG SendMessage(HWND a,WORD b,WORD c,LONG d)
MSG msg;
printf("SendMessage(%04x,%04x,%04x,%04lx)\n",a,b,c,d);
if (DDE_IsRemoteWindow(a) || a==(HWND)-1)
if (b!=WM_DDE_INITIATE)
msg.hwnd=c;
msg.message= WM_DDE_ACK;
msg.lParam= 0;
msg.wParam= 0;
return DDE_SendMessage(&msg);
BOOL PostMessage(HWND a,WORD b,WORD c,LONG d)
printf("PostMessage(%04x,%04x,%04x,%04lx)\n",a,b,c,d);
HWND GetTopWindow(HWND a)
printf("GetTopWindow(%04x)\n",a);
return 1;
WORD FreeSelector16(WORD a)
printf("FreeSelector(%04x)\n",a);
/* stub that partially emulates the true GLOBAL_CreateBlock function */
HGLOBAL16 GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
HGLOBAL16 hOwner, BOOL isCode,
BOOL is32Bit, BOOL isReadOnly,
SHMDATA *shmdata )
printf("GLOBAL_CreateBlock(flags=0x%x,ptr=0x%08lx, size=0x%x,hOwner=0x%x\n",
(int)flags, (long)ptr, (int)size, (int)hOwner);
printf("isCode=%d, is32Bit=%d, isReadOnly=%d, \n", isCode, is32Bit,
isReadOnly);
printf("*shmdata={handle=0x%x,sel=0x%x, shmid=%d})\n",
shmdata->handle, shmdata->sel, shmdata->shmid);
WND *WIN_FindWndPtr(HWND hwnd)
static WND win;
printf("WIN_FindWndPtr(%d)\n",hwnd);
if (hwnd==0)
return NULL;
win.next=NULL;
win.dwStyle=WS_POPUP;
return &win;
WORD GetCurrentPDB16(void)
printf("GetCurrentPDB()\n");
void Yield(void)