From 0d2ebd25b4245e240415b12d9d220136aa305df9 Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 20 Sep 2002 20:51:27 +0000 Subject: [PATCH] Doesn't kill NSIS :) git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1087 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/Splash/splash.c | 140 +++++++++++++--------------------------- Plugins/splash.dll | Bin 4096 -> 4096 bytes 2 files changed, 44 insertions(+), 96 deletions(-) diff --git a/Contrib/Splash/splash.c b/Contrib/Splash/splash.c index e17ce013..61f37063 100644 --- a/Contrib/Splash/splash.c +++ b/Contrib/Splash/splash.c @@ -8,44 +8,9 @@ typedef struct _stack_t { int popstring(char *str); // 0 on success, 1 on empty stack void pushstring(char *str); -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; +int g_stringsize; HBITMAP g_hbm; int sleep_val; @@ -85,11 +50,6 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar return 0; } if (uMsg == WM_CLOSE) return 0; - if (uMsg == WM_DESTROY) - { - PostQuitMessage(0); - return 0; - } if (uMsg == WM_TIMER || uMsg == WM_LBUTTONDOWN) { g_rv=(uMsg == WM_LBUTTONDOWN); @@ -106,64 +66,58 @@ BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lp void __declspec(dllexport) show(HWND hwndParent, int string_size, char *variables, stack_t **stacktop) { - g_hwndParent=hwndParent; + char fn[MAX_PATH]; + char temp[64]; + char *sleep=temp; + g_stringsize=string_size; g_stacktop=stacktop; - g_variables=variables; - // do your stuff here + popstring(fn); + popstring(sleep); + + sleep_val=0; + while (*sleep >= '0' && *sleep <= '9') { - char fn[MAX_PATH]; - char temp[64]; - char *sleep=temp; + sleep_val*=10; + sleep_val+=*sleep++-'0'; + } - popstring(fn); - popstring(sleep); - - sleep_val=0; - while (*sleep >= '0' && *sleep <= '9') + if (fn[0] && sleep_val>0) + { + MSG msg; + char classname[4]="_sp"; + static WNDCLASS wc; + wc.lpfnWndProc = WndProc; + wc.hInstance = g_hInstance; + wc.hCursor = LoadCursor(NULL,IDC_ARROW); + wc.lpszClassName = classname; + if (RegisterClass(&wc)) { - sleep_val*=10; - sleep_val+=*sleep++-'0'; - } - - if (fn[0] && sleep_val>0) - { - MSG msg; - char classname[4]="_sp"; - static WNDCLASS wc; - wc.lpfnWndProc = WndProc; - wc.hInstance = g_hInstance; - wc.hCursor = LoadCursor(NULL,IDC_ARROW); - wc.lpszClassName = classname; - if (RegisterClass(&wc)) + char fn2[MAX_PATH]; + lstrcpy(fn2,fn); + lstrcat(fn,".bmp"); + lstrcat(fn2,".wav"); + g_hbm=LoadImage(NULL,fn,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE); + if (g_hbm) { - char fn2[MAX_PATH]; - lstrcpy(fn2,fn); - lstrcat(fn,".bmp"); - lstrcat(fn2,".wav"); - g_hbm=LoadImage(NULL,fn,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE); - if (g_hbm) + PlaySound(fn2,NULL,SND_ASYNC|SND_FILENAME|SND_NODEFAULT); + + CreateWindowEx(WS_EX_TOOLWINDOW,classname,classname, + 0,0,0,0,0,(HWND)hwndParent,NULL,g_hInstance,NULL); + + while (GetMessage(&msg,NULL,0,0)) { - BOOL s=0; - HANDLE f=CreateFile(fn2,0,0,NULL,OPEN_EXISTING,0,NULL); - if (f != INVALID_HANDLE_VALUE) { CloseHandle(f); s=PlaySound(fn2,NULL,SND_ASYNC|SND_FILENAME); } - - CreateWindowEx(WS_EX_TOOLWINDOW,classname,classname, - 0,0,0,0,0,(HWND)hwndParent,NULL,g_hInstance,NULL); - - while (GetMessage(&msg,NULL,0,0)) - { - DispatchMessage(&msg); - } - - if (s) PlaySound(NULL,0,0); - - DeleteObject(g_hbm); - - wsprintf(temp,"%d",g_rv); - pushstring(temp); + DispatchMessage(&msg); } + + // Stop currently playing wave, we want to exit + PlaySound(0,0,0); + + DeleteObject(g_hbm); + + wsprintf(temp,"%d",g_rv); + pushstring(temp); } } } @@ -189,10 +143,4 @@ void pushstring(char *str) 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; } \ No newline at end of file diff --git a/Plugins/splash.dll b/Plugins/splash.dll index f884fcf92349da0fa364c2bcaf75012a91737437..dee960f13727897f9b731ee777d9faf9e5591b38 100644 GIT binary patch delta 1066 zcmc(d-Afcv7{G>5?my z%Zj@PA}KUktDCUWi^VQN5TXwX3A2c(E`$^jjOa$t>6s0||DYFs^Srj#KIapkJeE0jsV^{A-w)j{*9m$EV$09OvQO`ys3;A00P$U<5&OIK@m6z(9bWhNh zYE+$sR0tAr3d_mh@J|n~nH~DM9E`<0m zJZt$L(JstQoe-Z0At~)pqAOfViP`T=30ENp`tNUQnp+Kc#+T+rLITclb?L3hRf#3! z3xpKTng(!hJF9{IdmEaj zYL)|d>CZpPS0!dYkGgO+Tn?AX=SOpmzqlJ(Qw$Md)EzEW`@~xe`!gG&z9u|Zi~;8& zc4|fKa-l}gLjR0snNJ!rjBQY((~t6RhT^1J-R6m}X&(W&@TLC~CC) z3Vgmz87a#k>pT91$o=LNdJ2xtX*WZ``Q zNCR%r2s(fl41y8x6vTsdc$UBy@De-+r=jcN$Rw_4Awk@V$Eee-V4L;|hCFCXU@LMl zD6!&-ZR&gwxCm?UprOykzz+}dC-Q@S=PvU zn2!yx5F2K1*c|)8R+&vcEHk-4u9WNK7P(#Sl*i>~@(X!Y{w>ESNs3*`Q5;H{az?3B SE-F`)PQ|O>(^C!Nb>S~j`hP~8vjdv~2NlmvyR%z=5Vvycb|BArkhkhM>Z zvK3RB3~OiEO`M7R!7T0%C0QKFI`@aeG%hTe5tsSvk2$k6IV&IYu+<4Y{63t;*>>9rfoBER5pm;AM=;k(i7Tx+bIm31&h0IESFQ^_ zlbTvG&5)ikrms2egk-d7{hHm*8%1SZk3dL$K|b8cUlyw$TdX9moDVIgr`d~;THTtn z|4#T^prrRh-`E>Dg*EG#tX2{MC$az=$1)`vqddY-?yxH@_O!+}tnS<9psJ_Q!EvFUx2} z6u*QR6SX4BzD&&-iw||X;}U;Ssx2GARcX-~o|76X`mA2V(Gj^7GCe)~ro?u4L5fI7 zI}vo4{#Lv+A|T(3eDO`ZIJqPniH!CZrW+2^qeIunHK*xuB1(Uq(QYkYwDRbhJyk6b z+1yjt+mcJJ`1<6M&2UDD=^2I0FRZDnY(!uhZqsmuO5*}tT-zy7-o189BHg-4Or0Nb zCvR^!ARn_nqI}|GyJUU60-Gz~E&sIp@yFQ-8i5Y>fsMejb2WsV1~Xs^903=>7_h9X zmXJa41jvHPT9P0$2+n|W;1Vc;pFsd@2i2eg{DvVn!9m299bEZQ*UE59`wnrnmk|0l ztparcXg`5fi(9>3LPl!jRf&+-As*tNJMKvQ&pZCt6}SFt$1S8OIur}H^bYn#!{l+& zv_IS%4?j8(4L{7ETX&_>ZqtWi@pfY%-WHCg%7@BXKpVhP7EX0PG!A98|>?oUN@0GJN>@1sS-?AUr?67UW@F$`bU@QOt