diff --git a/Contrib/ShowWin/ShowWin.c b/Contrib/ShowWin/ShowWin.c index 0e4d3fab..689bd1f3 100644 --- a/Contrib/ShowWin/ShowWin.c +++ b/Contrib/ShowWin/ShowWin.c @@ -1,142 +1,55 @@ #include +#include "../exdll/exdll.h" -typedef struct _stack_t { - struct _stack_t *next; - char text[1]; // this should be the length of string_size -} stack_t; +//cleaned up by JF 9/21/02 -int popstring(char *str); // 0 on success, 1 on empty stack -void pushstring(char *str); int my_atoi(char *s); -enum -{ -INST_0, // $0 -INST_1, // $1 -INST_2, // $2 -INST_3, // $3 -INST_4, // $4 -INST_5, // $5 -INST_6, // $6 -INST_7, // $7 -INST_8, // $8 -INST_9, // $9 -INST_R0, // $R0 -INST_R1, // $R1 -INST_R2, // $R2 -INST_R3, // $R3 -INST_R4, // $R4 -INST_R5, // $R5 -INST_R6, // $R6 -INST_R7, // $R7 -INST_R8, // $R8 -INST_R9, // $R9 -INST_CMDLINE, // $CMDLINE -INST_INSTDIR, // $INSTDIR -INST_OUTDIR, // $OUTDIR -INST_EXEDIR, // $EXEDIR -INST_LANG, // $LANGUAGE -__INST_LAST -}; - -char *getuservariable(int varnum); - HINSTANCE g_hInstance; -HWND g_hwndParent; -int g_stringsize; -stack_t **g_stacktop; -char *g_variables; + +HWND mygetwnd() +{ + if (g_stacktop && *g_stacktop) + { + HWND h=(HWND)my_atoi((*g_stacktop)->text); + popstring(NULL); + return h; + } + return 0; +} void __declspec(dllexport) Show(HWND hwndParent, int string_size, char *variables, stack_t **stacktop) { - g_hwndParent=hwndParent; - g_stringsize=string_size; - g_stacktop=stacktop; - g_variables=variables; - - // do your stuff here + EXDLL_INIT() { - HWND hwnd_ctrl; - char* str_var; - str_var = (char *)GlobalAlloc(GPTR, sizeof(char)*string_size+1); - if (!popstring(str_var)) { - hwnd_ctrl = (HWND)my_atoi(str_var); - if (IsWindow(hwnd_ctrl)) { - ShowWindow(hwnd_ctrl,1); - } else { - pushstring("error"); - } - } else { - pushstring("error"); - } + HWND hwnd_ctrl=mygetwnd(); + if (hwnd_ctrl && IsWindow(hwnd_ctrl)) ShowWindow(hwnd_ctrl,1); } } void __declspec(dllexport) Hide(HWND hwndParent, int string_size, char *variables, stack_t **stacktop){ - g_hwndParent=hwndParent; - g_stringsize=string_size; - g_stacktop=stacktop; - g_variables=variables; + EXDLL_INIT() { - HWND hwnd_ctrl; - char* str_var; - str_var = (char *)GlobalAlloc(GPTR, sizeof(char)*string_size+1); - if (!popstring(str_var)) { - hwnd_ctrl = (HWND)my_atoi(str_var); - if (IsWindow(hwnd_ctrl)) { - ShowWindow(hwnd_ctrl,0); - } else { - pushstring("error"); - } - } else { - pushstring("error"); - } + HWND hwnd_ctrl=mygetwnd(); + if (hwnd_ctrl && IsWindow(hwnd_ctrl)) ShowWindow(hwnd_ctrl,0); } } void __declspec(dllexport) Enable(HWND hwndParent, int string_size, char *variables, stack_t **stacktop){ - g_hwndParent=hwndParent; - g_stringsize=string_size; - g_stacktop=stacktop; - g_variables=variables; + EXDLL_INIT() { - HWND hwnd_ctrl; - char* str_var; - str_var = (char *)GlobalAlloc(GPTR, sizeof(char)*string_size+1); - if (!popstring(str_var)) { - hwnd_ctrl = (HWND)my_atoi(str_var); - if (IsWindow(hwnd_ctrl)) { - EnableWindow(hwnd_ctrl,TRUE); - } else { - pushstring("error"); - } - } else { - pushstring("error"); - } + HWND hwnd_ctrl=mygetwnd(); + if (hwnd_ctrl && IsWindow(hwnd_ctrl)) EnableWindow(hwnd_ctrl,TRUE); } } void __declspec(dllexport) Disable(HWND hwndParent, int string_size, char *variables, stack_t **stacktop){ - g_hwndParent=hwndParent; - g_stringsize=string_size; - g_stacktop=stacktop; - g_variables=variables; + EXDLL_INIT() { - HWND hwnd_ctrl; - char* str_var; - str_var = (char *)GlobalAlloc(GPTR, sizeof(char)*string_size+1); - if (!popstring(str_var)) { - hwnd_ctrl = (HWND)my_atoi(str_var); - if (IsWindow(hwnd_ctrl)) { - EnableWindow(hwnd_ctrl,FALSE); - } else { - pushstring("error"); - } - } else { - pushstring("error"); - } + HWND hwnd_ctrl=mygetwnd(); + if (hwnd_ctrl && IsWindow(hwnd_ctrl)) EnableWindow(hwnd_ctrl,0); } } @@ -146,34 +59,6 @@ BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lp return TRUE; } -// utility functions (not required but often useful) -int popstring(char *str) -{ - stack_t *th; - if (!g_stacktop || !*g_stacktop) return 1; - th=(*g_stacktop); - lstrcpy(str,th->text); - *g_stacktop = th->next; - GlobalFree((HGLOBAL)th); - return 0; -} - -void pushstring(char *str) -{ - stack_t *th; - if (!g_stacktop) return; - th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize); - lstrcpyn(th->text,str,g_stringsize); - th->next=*g_stacktop; - *g_stacktop=th; -} - -char *getuservariable(int varnum) -{ - if (varnum < 0 || varnum >= __INST_LAST) return NULL; - return g_variables+varnum*g_stringsize; -} - int my_atoi(char *s) { unsigned int v=0; diff --git a/Contrib/ShowWin/ShowWin.dsp b/Contrib/ShowWin/ShowWin.dsp index 9ff57e02..454670c2 100644 --- a/Contrib/ShowWin/ShowWin.dsp +++ b/Contrib/ShowWin/ShowWin.dsp @@ -98,6 +98,10 @@ SOURCE=.\ShowWin.c # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\ExDLL\exdll.h +# End Source File # End Group # Begin Group "Resource Files"