Usermode/AxWin3 - Implementing SendMessage for client
[tpg/acess2.git] / Usermode / Applications / axwin3_src / libaxwin3.so_src / wm.c
index 9f15ad7..fc5ed64 100644 (file)
@@ -8,8 +8,8 @@
 #include <axwin3/axwin.h>
 #include <stdlib.h>
 #include <string.h>
-#include "include/ipc.h"
 #include "include/internal.h"
+#include "include/ipc.h"
 
 #define WINDOWS_PER_ALLOC      (63)
 
@@ -79,9 +79,8 @@ tWindow *AxWin3_int_AllocateWindowInfo(int DataBytes, int *WinID)
 }
 
 tHWND AxWin3_CreateWindow(
-       tHWND Parent, const char *Renderer, int Flags,
-       int DataBytes, void **DataPtr,
-       tAxWin3_WindowMessageHandler MessageHandler
+       tHWND Parent, const char *Renderer, int RendererArg,
+       int DataBytes, tAxWin3_WindowMessageHandler MessageHandler
        )
 {
        tWindow *ret;
@@ -99,7 +98,7 @@ tHWND AxWin3_CreateWindow(
        msg = AxWin3_int_AllocateIPCMessage(Parent, IPCMSG_CREATEWIN, 0, dataSize);
        create_win = (void*)msg->Data;  
        create_win->NewWinID = newWinID;
-       create_win->Flags = Flags;
+       create_win->RendererArg = RendererArg;
        strcpy(create_win->Renderer, Renderer);
 
        // Send and clean up
@@ -109,7 +108,6 @@ tHWND AxWin3_CreateWindow(
        // TODO: Detect and handle possible errors
 
        // Return success
-       if(DataPtr)     *DataPtr = ret->Data;
        return ret;
 }
 
@@ -122,6 +120,21 @@ void AxWin3_DestroyWindow(tHWND Window)
        free(msg);
 }
 
+void *AxWin3_int_GetDataPtr(tHWND Window)
+{
+       return &Window->Data;
+}
+
+void AxWin3_SendMessage(tHWND Window, tHWND Destination, int Message, int Length, void *Data)
+{
+       tAxWin_IPCMessage       *msg;
+       tIPCMsg_SendMsg *info;
+       
+       msg = AxWin3_int_AllocateIPCMessage(Window, IPCMSG_SENDMSG, 0, sizeof(*info)+Length);
+       info = (void*)msg->Data;
+       info->Dest = AxWin3_int_GetWindowID(Destination);
+}
+
 void AxWin3_ShowWindow(tHWND Window, int bShow)
 {
        tAxWin_IPCMessage       *msg;
@@ -144,7 +157,8 @@ void AxWin3_SetWindowPos(tHWND Window, short X, short Y, short W, short H)
        msg = AxWin3_int_AllocateIPCMessage(Window, IPCMSG_SETWINPOS, 0, sizeof(*info));
        info = (void*)msg->Data;
 
-       info->Fields = 0xF;
+       info->bSetPos = 1;
+       info->bSetDims = 1;
        info->X = X;    info->Y = Y;
        info->W = W;    info->H = H;
 
@@ -160,7 +174,8 @@ void AxWin3_MoveWindow(tHWND Window, short X, short Y)
        msg = AxWin3_int_AllocateIPCMessage(Window, IPCMSG_SETWINPOS, 0, sizeof(*info));
        info = (void*)msg->Data;
 
-       info->Fields = 0x3;
+       info->bSetPos = 1;
+       info->bSetDims = 0;
        info->X = X;
        info->Y = Y;
        
@@ -177,7 +192,8 @@ void AxWin3_ResizeWindow(tHWND Window, short W, short H)
        msg = AxWin3_int_AllocateIPCMessage(Window, IPCMSG_SETWINPOS, 0, sizeof(*info));
        info = (void*)msg->Data;
 
-       info->Fields = 0xC;
+       info->bSetPos = 0;
+       info->bSetDims = 1;
        info->W = W;
        info->H = H;
        

UCC git Repository :: git.ucc.asn.au