X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibaxwin2.so_src%2Fmain.c;h=de08442f34f341faf83ad2518e4ba3bf3a87e786;hb=7378996995784940b371210bf7167628551a3486;hp=1dfcf9b23b4bc83e355d43113dacad9aed2b0818;hpb=d55488f17f9fbd25d9126853720e2fd78bd8540f;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libaxwin2.so_src/main.c b/Usermode/Libraries/libaxwin2.so_src/main.c index 1dfcf9b2..de08442f 100644 --- a/Usermode/Libraries/libaxwin2.so_src/main.c +++ b/Usermode/Libraries/libaxwin2.so_src/main.c @@ -11,7 +11,8 @@ // === GLOBALS === int giAxWin_Mode = 0; - int giAxWin_PID = 0; + int giAxWin_PID = 9; // HACK! +tAxWin_MessageCallback *gAxWin_DefaultCallback; // === CODE === int SoMain() @@ -19,62 +20,67 @@ int SoMain() return 0; } -int AxWin_Register(const char *Name) +tAxWin_Message *AxWin_int_SendAndWait(int RetID, tAxWin_Message *Message) { - tAxWin_Message req; tAxWin_Message *msg; - tAxWin_RetMsg *ret; - int len = strlen(Name); - - req.ID = MSG_SREQ_REGISTER; - req.Size = 1 + (len+1)/4; - strcpy(req.Data, Name); - - AxWin_SendMessage(&req); + tAxWin_RetMsg *rmsg; + + AxWin_SendMessage(Message); for(;;) { msg = AxWin_WaitForMessage(); - if(msg->ID == MSG_SREQ_ADDTAB) - { - ret = (void*) &msg->Data[0]; - if( ret->ReqID == MSG_SREQ_REGISTER ) - break; - } + rmsg = (void*)msg->Data; + if(msg->ID == MSG_SRSP_RETURN && rmsg->ReqID == Message->ID ) + break; AxWin_HandleMessage(msg); free(msg); } - return !!ret->Bool; + return msg; +} + +int AxWin_Register(const char *Name, tAxWin_MessageCallback *DefaultCallback) +{ + tAxWin_Message req; + tAxWin_Message *msg; + int ret; + int len = strlen(Name); + + req.ID = MSG_SREQ_REGISTER; + req.Size = 1 + (len+1)/4; + strcpy(req.Data, Name); + + msg = AxWin_int_SendAndWait(MSG_SRSP_RETURN, &req); + ret = ((tAxWin_RetMsg*)msg->Data)->Value; + free(msg); + + gAxWin_DefaultCallback = DefaultCallback; + + return !!ret; } -tAxWin_Handle AxWin_AddTab(const char *Title) +tAxWin_Element *AxWin_CreateWindow(const char *Title) { tAxWin_Message req; tAxWin_Message *msg; - tAxWin_RetMsg *ret; + tAxWin_Element *ret; int len = strlen(Title); - req.ID = MSG_SREQ_ADDTAB; + req.ID = MSG_SREQ_ADDWIN; req.Size = 1 + (len+1)/4; strcpy(req.Data, Title); - for(;;) - { - msg = AxWin_WaitForMessage(); - - if(msg->ID == MSG_SRSP_RETURN) - { - ret = (void*) &msg->Data[0]; - if( ret->ReqID == MSG_SREQ_ADDTAB ) - break; - } - - AxWin_HandleMessage(msg); - free(msg); - } + msg = AxWin_int_SendAndWait(MSG_SRSP_RETURN, &req); + ret = (tAxWin_Element*) ((tAxWin_RetMsg*)msg->Data)->Value; + free(msg); - return (tAxWin_Handle) ret->Handle; + return ret; +} + +tAxWin_Element *AxWin_AddMenuItem(tAxWin_Element *Parent, const char *Label, int Message) +{ + return NULL; }