I have several thousand questions...

Blitz3D Forums/Blitz3D Beginners Area/I have several thousand questions...

Glennium(Posted 2003) [#1]
...only of which the first four are posted here.

Hello, my name is Glenn, and I am almost new to programming.

And now, my questions are thus:

1.) When I create a program to run smaller than full screen in windows, how do I remove the windows borders and title bar? I.E. if I wanted to put a frisbee on the desktop that would spin or transform when clicked upon.

2.) Do all of the graphics used, need to be seperate from the program, or can they be incorporated directly into the program as one file?

3.) Is there a way to remove the taskbar icon while a program runs in Blitz? I.E. Frisbee.

4.) And or, how can I run the program in the SysTray?

Thanks to everyone...


jhocking(Posted 2003) [#2]
1. I don't think you can. I may be wrong, but I assume you will need some sort of dll to accomplish that. BlitzPlus can get rid of the title bar and stuff but the window will still be rectangular and it sounds like you want a transparent background so that it is in the shape of the frisbee; that I don't know how to do.

2. Everything can be incorporated into a single exe but not by Blitz. You would need an external tool which compresses everything into a single file (and these tend to be pretty pricey.) Note however there are free tools like Terabit's DataPak which can pack all the external assets into a single .pak file; in that case you only need two files, the exe and pak.

3. There is a way in BlitzPlus but not in Blitz3D. You just use the appropriate flags when you call CreateWindow.

4. Over my head. I suspect this is kind of sad for me to admit but I have no idea what the SysTray is.


NTense(Posted 2003) [#3]
Actually, in Terabit's DataPak, you can even pack the files into the .exe . I've used that in many of my programs. Glennium, it sounds like you're wanting to do quite a bit of stuff that Blitz wasn't exactly designed to do. Not to say it can't be done, but you're asking for a lot of low level functionality that you would need to access the windows OS with.


Koriolis(Posted 2003) [#4]
1. You can, but only through the use of external DLL (it involves using the Win32 API to get a handle to the window, and cut the border ). Not complelty clean though.
2. There are external packers like jhocking said. But you can also incorporate data in the executable itself through 'Data' statements (see the online doc). Ther are tools that will convert any file to a bucnh of dtat statements that you then include in your project. These files can then be exctracted at runtime.
3. Same as 1
4. I don't think you can.


WendellM(Posted 2003) [#5]
how do I remove the windows borders and title bar?

Jammin/Echtzeit's Skin.DLL does that, allowing you to have a masked image in any shape as your window shape:
http://mitglied.lycos.de/graphicfreak/


Glennium(Posted 2003) [#6]
Thanks to everyone so far, before I head off to check out
Jammin/Echtzeit's Skin.DLL and Terabit's DataPak.


soja(Posted 2003) [#7]
jhocking, the systray (the "System Notification Area", as Microsoft would have you call it) is the bar of icons and clock display on the taskbar.

4) You can get an icon into the system tray, but it's not easy to support menus and stuff there, as you're typically accustomed to working with. You could use an external DLL specifically made for that. In fact, I think someone posted something like that. Check the code archives of the userlibs forum for something like "Taskbar Tray Example" by Kevin Poole.


Oldefoxx(Posted 2003) [#8]
I amit that it sounds like you want to run and leap before you learn to crawl and walk. That said, PureBASIC includes some tools for working with the SysTray, and through the use of DLLs, you might strike a happy medium of using the two languages together.

Anything you put on the screen has a rectangular shape. The fact that you do not always see a rectangle is due to the use a camoflauge - the background is made transparent (same color) as the object behind it in those areas where you do not want the foreground object to be seen.

For you to do what you want, you would either have to be able to draw to a transparent window positioned over the desktop, or to the desktop itself. The former is more in keeping with letting Windows do it's thing while you do yours (and may mean fewer problems later).

You do not actually make objects spin and rotate. You either redraw them from a different perspective and then flip them to the screen, or you use a movie technique and rapidly update frames with different image files or icons.
Slightly shifting the viewing angle between one frame and the next, and maintaining a steady rate of frame updates, is the key to giving the illusion of rotation or spinning (or any other type of motion).

Balls are excellent rotational objects, particularly those with stripes or checks on them. That is because with as little as three consecutive frames, you can give the illusion that the ball is rotating or spinning. To give the illusion that someone is walking would probably take at least twice that many (and would require you to reverse the images on every other sequence so that the same movements could be seen for the other leg and arm).


WolRon(Posted 2003) [#9]
1, 3, & 4 can be accomplished thruough API calls to the operating system but Blitz3D is not capable of this. BlitzPlus may be, but I'm not familiar with it. To make it work from within Blitz you will either have to use DLL's written from another language or program your app with another language.


Glennium(Posted 2003) [#10]
Thanks to everyone, I have already done a sample of
saving a program with the graphics embedded and it worked
just fine.

I also have many ideas for things occupying space upon the
desktop, not just the frisbee/flying saucer.

... but like my father taught me, if you aim low, you will
always hit what you are aiming at; but if you aim high, you
might not hit the mark exactly, but you can come close, or
rarely even exceed it.

Glenn


soja(Posted 2003) [#11]
...API calls to the operating system but Blitz3D is not capable of this.

I think you're a little behind the times. Look up userlibs. A relatively recent upgrade to Blitz3D allows them, and they're built-in to BlitzPlus from the start.


Ross C(Posted 2003) [#12]
is there anyway to find out the directory that windows keeps the current wallpaper that is being used? if so, make the program go full screen, and create your own desktop, so it appears that the user is still in the windows desktop. from within blitz you could do all of these things.


jhocking(Posted 2003) [#13]
That's a pretty hacky way of doing things, especially concerning the "real" way has already been pretty much established through responses in this thread. Besides, your hack wouldn't be quite right for a variety of reasons; it wouldn't look like the Desktop because there wouldn't be any icons, nor would there be a taskbar, plus the user can't launch any other programs, etc.


Ross C(Posted 2003) [#14]
ok, sorry bout that...


jhocking(Posted 2003) [#15]
No need to be sorry, just pointing out. I'm sure you simply didn't bother reading the other posts.


Ross C(Posted 2003) [#16]
yeah, i'm just a bit too eager to help ppl sometimes :)


(tu) ENAY(Posted 2003) [#17]
> I have several thousand questions...

Oh. In that case I'll answer Question 3542, and 3543 if you're lucky.