Skip to content
⌘ NSIS Forum Archive

newAdvSplash problem

10 posts

arfgh#

newAdvSplash problem

Banner::show /NOUNLOAD 'blahblah'
IntOp $0 $0 + 1
Sleep 10
StrCmp $0 100 0 -2
Banner::destroy
newadvsplash::show /NOUNLOAD 1000 500 500 -1 /BANNER /PASSIVE 'a.bmp'
Pop $0


i have this code. And it works. But a so strange anomaly appears in the image. Yes, the image make its effect but only in the dekstop. If i have some window opened, the image is not visible.

If i remove the banner, then i can see the image over all.

How can i fix this problem ?
Takhir#
Remove /passive key, this should make AdvSplash window topmost after application have lost focus after banner was destroyed. And I guess /nounload has no effect for Banner::show.
arfgh#edited
yes, this works.
but now i have other problem with the banner. Look this code
y use 2 banners and 1 newAdvSplash


Banner::show /NOUNLOAD 'blah'
IntOp $0 $0 + 1
Sleep 10
StrCmp $0 100 0 -2
Banner::destroy
newadvsplash::show /NOUNLOAD 2250 500 500 -1 /BANNER 'a.bmp'
Pop $0
Banner::show /NOUNLOAD 'Ready'
IntOp $0 $0 + 1
Sleep 10
StrCmp $0 100 0 -2
Banner::destroy
newadvsplash::wait


The problem is, the second banner i want to use, not appear, onyl on the taskbar. But it appear in the middle of the screen if i use the /PASSIVE on the newAdvSplash

is so strange
Takhir#
Sorry, /nounload required for modeless nsis banner. Second banner is hidden by topmost advsplash window if it is not /passive. Another problem is how Windows moves focus to other application if main (the only) window was destroyed (first banner). Try to set banner position outside advsplash rect using System plug-in & MoveWindow or SetWindowPos calls.
Takhir#
Why not? 🙂 Archive search http://nsis.sourceforge.net/Special:...ulltext=Search
or just
...
Banner::getWindow /NOUNLOAD
Pop $0
System::Call "user32::MoveWindow(i r0, i 0, i 0, i 200, i 100) i r2"
...
Looks a bit ugly if banner first appear in the center and jumps to corner after this only, but a bit animation can solve the problem.
arfgh#edited
System::Call "user32::MoveWindow(i r0, i 0, i 0, i 200, i 100) i r2"

I know to use this api, but i not understand that 'i'

i r0 = the handle of the window. Where you get that ?
and the other 'i' on the position and size ?

Is possible to get the current position to a var and then apply this value + 100 pixels for example ?


thx



EDIT: maybe the trick to fix this problem is use the SetWindowLong Api to make the banner appears in front of the image. But i dont knwo how to do that on nsis 🙁
Takhir#
Use IntOp to update int value.
'i' described in Start->Programs->NSIS->Contrib->System Readme
Link in my previous post describes how to get current position and window size.
arfgh#
but Takhir maybe the trick to fix this problem is use the SetWindowLong Api to make the banner appears in front of the image. But i dont knwo how to do that on nsis
Takhir#
Forum search can help you in most cases, for SetWindowLong I see http://forums.winamp.com/showthread....=SetWindowLong (while I guess this is usefull on the dialog init step only, but this is available in the plug-in source code only). Attached script I wrote right now, looks funny 😉