April 30, 2024, 10:50:27 PM

News:

Own IWBasic 2.x ? -----> Get your free upgrade to 3.x now.........


Drag and Drop Game for Children

Started by CodeTRUCKER, November 24, 2010, 01:30:36 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

CodeTRUCKER

Quote from: Brian Pugh on December 29, 2010, 02:13:38 AM
Hey, Calvin!

I wasn't having a dig at you. I've never used this Direct stuff before myself. When I loaded
up your example, it threw an error with the bitmaps. So THEN I looked at the help file

My programming is a bit like yours, 90% looking up examples, and 10% writing code

Unfortunately, at work today . . .

Brian


I'm glad to hear it.  I didn't consider your exclamation point would have been aimed at you.  I guess I'm under more pressure than I realized, but life goes on.  Thanks for clarifying and making me feel not so alone in the "10% Club!" :)

Calvin
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

CodeTRUCKER

FYI - Someone on another forum has pointed out that the latest versions of Windows have a "Previous Versions" tab in the Properties of every file!  So, I'm a bunch behind my time, but at least I'm not all the way back at the beginning.   ;D

Well, wish me luck.  I'm back to work!
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

CodeTRUCKER

Quote from: Larry McCaughn on December 29, 2010, 07:59:25 AM
Quote from: Brian Pugh on December 29, 2010, 02:13:38 AM
My programming is a bit like yours, 90% looking up examples, and 10% writing code
As is mine!

LarryMc

Hmmm... given that you must spend at least a couple hours a day on coding (based on how prolific you are) that means you could only get two hours of sleep!

No wonder you're so prolific!  ;D
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

You'd be surprised how much time I soend on my computer.
With my health the way it is I'm not able to do much else. ;)

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

Since I understand what you mean about health limitations, maybe not....

You see, I have my computers and monitors on one of those hospital rolling tables which I snug up to my La-Z-Boy recliner where I peck away from the time I get up until I go to bed almost every day.  I occasionally will spend a couple of hours with my family by rolling away the table, but I still stay in my "Boy."  I do try to get outdoors a couple of times a day for a few minutes.  Fortunately, I live in the country, so the outdoors does beckon me from time to time.  I am hoping 2011 will allow the realization of some family businesses, including some maturity to my coding skills.  My New Year's Resolution is to structure my computer activities and discipline my self to play at the right time and work when it's time to work.

Hmmm... that reminds me.  I better get back to coding.
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

CodeTRUCKER

Yoohoo?

Is their any advantage to migrating what I have left of my app from EmergenceBASIC to IWBASIC?

I tried, but it keeps telling me "No input files specified."

I'm lost on this.  FYI - I will post a zip of my app as soon as I fix a couple of know issues.
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

Tell me the steps you went through when you tried to "migrate" your app.
And which version of IWB do you have?

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

Quote from: Larry McCaughn on December 29, 2010, 04:44:17 PM
Tell me the steps you went through when you tried to "migrate" your app.

LarryMc

- I selected "Saved As" which populated the dialog as "veggiesquares.eba".
- Changed the file typ to "All Files"
- Used the same file name ("veggiesquares") and added the "iwb" extension to save it as "veggiesquares.iwb".
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

to make sure I understand (based upon what you said).
The app you've been working on consists of one single file named "veggiesquares.eba".
It is not part of a project.

you saved the file with the iwb extention.

you closed ebasic, started the IWB IDE and opened the "veggiesquares.iwb" file (and not a project).
you clicked on the exe toolbar button and told it to compile it as a windows.exe.

The reason I go through all those steps is because I've only seen the error message "No input files specified."
when I've created a project and tried to compile it before I've added any source files to the project.

LarryMc


LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

Quote from: Larry McCaughn on December 29, 2010, 05:53:06 PM
...
It is not part of a project.
...
LarryMc


BINGO!  Again, somehow without me knowing (understanding?) how it occurred, there *was* a project open?!?

Thanks again!  Back to work!
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

CodeTRUCKER

Next issue: showing/hiding Radio Buttons

I'm pretty sure the 3rd digit in the hex is 5=visible and 4=invisible, please explain what is the purpose of the hex or the rest of the hex in red below.  I have tried to find info in the ebooks and help, but if it is there, I can't find it.

CONTROL w,@RADIOBUTTON,"Radio1",250,200,70,20,0x40000009,RADIO_1
CONTROL w,@RADIOBUTTON,"Radio2",250,300,70,20,0x50000009,RADIO_2

Also, on execution the window appears with nothing in it and in a few seconds just closes.  Why?

FYI - my deadline is 27 hours away.  Please help!

Thanks for the help!
Calvin


/*
This program has two radio buttons and two checkboxes.
When a checkbox is checked the respective radio button
should be visible.  When a checkbox is unchecked the
respective radio button should hide.


*/


DEF w as window

DEF RADIO_1 as INT
DEF RADIO_2 as INT

CONST STATIC_3 = 3
CONST STATIC_4 = 4

CONST CHECK_5 = 1
CONST CHECK_6 = 2



OPENWINDOW w,0,0,500,500,@NOAUTODRAW|@MINBOX,NULL,"Radio Button Test",&handler
CENTERWINDOW(w)
' IF(ATTACHscr(w,scrW*0.95,scrH*0.90,TRUE) < 0)
IF(ATTACHSCREEN(w,500,500,TRUE) < 0)
    MESSAGEBOX w,"Couldn't create DirectX window","Error"
    CLOSEWINDOW w
    END
ENDIF

CONTROL w,@RADIOBUTTON,"Radio1",250,200,70,20,0x50000009,RADIO_1
CONTROL w,@RADIOBUTTON,"Radio2",250,300,70,20,0x50000009,RADIO_2

CONTROL w,@STATIC,"Hide First",180,46,70,20,@CTLSTCSIMPLE|0x5000010B,STATIC_3
CONTROL w,@STATIC,"Hide Second",175,102,70,20,@CTLSTCSIMPLE|0x5000010B,STATIC_4

CONTROL w,@CHECKBOX,"Check1",400,100,70,20,0x50000003,CHECK_5
CONTROL w,@CHECKBOX,"Check2",400,300,70,20,0x50000003,CHECK_6




SUB handler
SELECT @MESSAGE
CASE @IDCONTROL
SELECT @CONTROLID
CASE RADIO_1
IF @NOTIFYCODE = 0
/*button clicked*/
ENDIF
CASE RADIO_2
IF @NOTIFYCODE = 0
/*button clicked*/
ENDIF
CASE @IDCONTROL
SELECT @CONTROLID
CASE CHECK_5
IF @NOTIFYCODE = 0
/*button clicked*/
ENDIF
CASE CHECK_6
IF @NOTIFYCODE = 0
/*button clicked*/
ENDIF
ENDSELECT
ENDSELECT
ENDSELECT

IF @MESSAGE = @IDCLOSEWINDOW
CLOSESCREEN
CLOSEWINDOW w
    ENDIF

RETURN
ENDSUB

Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

Too many errors to explain them all.
This will do what you want, as I understand it.
/*
This program has two radio buttons and two checkboxes.
When a checkbox is checked the respective radio button
should be visible.  When a checkbox is unchecked the
respective radio button should hide.


*/


DEF w as window

CONST  RADIO_1 =5
CONST  RADIO_2 =6

CONST STATIC_3 = 3
CONST STATIC_4 = 4

CONST CHECK_5 = 1
CONST CHECK_6 = 2

OPENWINDOW w,0,0,500,500,@NOAUTODRAW|@MINBOX,NULL,"Radio Button Test",&handler
' IF(ATTACHscr(w,scrW*0.95,scrH*0.90,TRUE) < 0)
IF(ATTACHSCREEN(w,500,500,TRUE) < 0)
MESSAGEBOX w,"Couldn't create DirectX window","Error"
CLOSEWINDOW w
END
ENDIF

CONTROL w,@RADIOBUTTON,"Radio1",250,200,70,20,0,RADIO_1
CONTROL w,@RADIOBUTTON,"Radio2",250,300,70,20,0,RADIO_2
showwindow w,@swhide,RADIO_1
showwindow w,@swhide,RADIO_2

CONTROL w,@STATIC,"Hide First",180,46,90,20,0,STATIC_3
CONTROL w,@STATIC,"Hide Second",175,102,90,20,0,STATIC_4

CONTROL w,@CHECKBOX,"Check1",400,100,70,20,0,CHECK_5
CONTROL w,@CHECKBOX,"Check2",400,300,70,20,0,CHECK_6

WAITUNTIL w = 0
END



SUB handler
SELECT @MESSAGE
case @IDCREATE
CENTERWINDOW(w)
CASE @IDCONTROL
SELECT @CONTROLID
CASE RADIO_1
IF @NOTIFYCODE = 0
/*button clicked*/
ENDIF
CASE RADIO_2
IF @NOTIFYCODE = 0
/*button clicked*/
ENDIF
CASE CHECK_5
IF @NOTIFYCODE = 0
if getstate(w,CHECK_5)=0
showwindow w,@swhide,RADIO_1
else
showwindow w,@swshow,RADIO_1
endif
ENDIF
CASE CHECK_6
IF @NOTIFYCODE = 0
if getstate(w,CHECK_6)=0
showwindow w,@swhide,RADIO_2
else
showwindow w,@swshow,RADIO_2
endif
ENDIF
ENDSELECT
case @IDCLOSEWINDOW
CLOSESCREEN
CLOSEWINDOW w
ENDSELECT
RETURN
ENDSUB


LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

LarryMc

The one thing you have to remember when using those hex numbers generated by the dialog editor:

Some of the bits are automatically generated internally by the parser so that you changing the hex value manually really have no effect.
For you see, in the real world of WINDOWS an IWBasic button,radiobutton,checkbox, and groupbox are really a windows'  BUTTON.
And it's the automatic handling of the proper bits that allows them to work the way they are implemented in IWB.

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

LarryMc

This is the way I probably would have coded it.
More than one way to skin a cat.
/*
This is the way I would have coded it
*/

window w
enum ctrls
RADIO_1 =1
RADIO_2
STATIC_3
STATIC_4
CHECK_5
CHECK_6
endenum

OPENWINDOW w,0,0,500,500,@NOAUTODRAW|@MINBOX,NULL,"Radio Button Test",&handler
' IF(ATTACHscr(w,scrW*0.95,scrH*0.90,TRUE) < 0)
IF(ATTACHSCREEN(w,500,500,TRUE) < 0)
MESSAGEBOX w,"Couldn't create DirectX window","Error"
CLOSEWINDOW w
END
ENDIF

CONTROL w,@RADIOBUTTON,"Radio1",250,200,70,20,0,RADIO_1
CONTROL w,@RADIOBUTTON,"Radio2",250,300,70,20,0,RADIO_2
showwindow w,@swhide,RADIO_1
showwindow w,@swhide,RADIO_2

CONTROL w,@STATIC,"Hide First",180,46,90,20,0,STATIC_3
CONTROL w,@STATIC,"Hide Second",175,102,90,20,0,STATIC_4

CONTROL w,@CHECKBOX,"Check1",400,100,70,20,0,CHECK_5
CONTROL w,@CHECKBOX,"Check2",400,300,70,20,0,CHECK_6

WAITUNTIL w = 0
END



SUB handler
SELECT @MESSAGE
case @IDCREATE
CENTERWINDOW(w)
CASE @IDCONTROL
SELECT @CONTROLID
CASE RADIO_1
IF @NOTIFYCODE = 0
ENDIF
CASE RADIO_2
IF @NOTIFYCODE = 0
ENDIF
CASE CHECK_5
IF @NOTIFYCODE = 0
showwindow w,getstate(w,CHECK_5),RADIO_1
ENDIF
CASE CHECK_6
IF @NOTIFYCODE = 0
showwindow w,getstate(w,CHECK_6),RADIO_2
ENDIF
ENDSELECT
case @IDCLOSEWINDOW
CLOSESCREEN
CLOSEWINDOW w
ENDSELECT
RETURN
ENDSUB

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

Quote from: Larry McCaughn on December 30, 2010, 08:51:06 PM
The one thing you have to remember when using those hex numbers generated by the dialog editor:

Some of the bits are automatically generated internally by the parser so that you changing the hex value manually really have no effect.
For you see, in the real world of WINDOWS an IWBasic button,radiobutton,checkbox, and groupbox are really a windows'  BUTTON.
And it's the automatic handling of the proper bits that allows them to work the way they are implemented in IWB.

LarryMc

Ok, does this means I don't have to use them, right?

LarryM, - I know I've said it before, but I have to thank you again for your mentorship!  It's nice having the helping hand!

Calvin
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

Quote from: CodeTRUCKER on December 30, 2010, 10:08:23 PM
Quote from: Larry McCaughn on December 30, 2010, 08:51:06 PM
The one thing you have to remember when using those hex numbers generated by the dialog editor:

Some of the bits are automatically generated internally by the parser so that you changing the hex value manually really have no effect.
For you see, in the real world of WINDOWS an IWBasic button,radiobutton,checkbox, and groupbox are really a windows'  BUTTON.
And it's the automatic handling of the proper bits that allows them to work the way they are implemented in IWB.

LarryMc

Ok, does this means I don't have to use them, right?
Yes and no.
For the basic defaults no - they are taken care of internally.
For additional features you have to add flags. - In the dialog editor you can select a control and right click select properties and click a checkbox to add a feature and the hex number will be changed accordingly.

An throughout the help file window/controls section there are descriptions for numerous constants you can use for style flags.

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

Hello LarryM,

I have to admit I am unclear about how the code works in the [Your Preferred Code] (second example), but I'll take a guess. 

Ok, if I understand the following correctly and given these do exactly the same thing, I think?

In this first example, [Your Initially Suggested Code], everything s pretty straight forward.  @NOTIFY of CHECK_5 is being tested against the default value of @NOTIFY being "off."  Then state (condition) of CHECK_5 is tested.  If CHECK_5 is *not* selected, the *HIDE* the radio button, RADIO_5.  Otherwise *SHOW* the radio button.   

[Your Initially Suggested Code]
...
01   CASE CHECK_5
02      IF @NOTIFYCODE = 0
03         IF GETSTATE(w,CHECK_5)=0
04            SHOWWINDOW w,@SWHIDE,RADIO_1
05         ELSE
06            SHOWWINDOW w,@SWSHOW,RADIO_1
07                  ENDIF
08               ENDIF
...


Now in the following [Your Preferred Code] line 23 below it looks like IWBASIC makes the assumption the default state of the check box is "unchecked" and therefore, the visibility of RADIO_1 is *hidden*.    Given this, it seems that *if* the default condition (GETSTATE) of CHECK_5 (unchecked) is not true (checked), THEN the opposite of the default is true and the radio button, RADIO_1 is made visible.   Essentially, everything is assumed to be "off" so only the coding for the opposite of the default is necessary.

[Your Preferred Code]
...
21   CASE CHECK_5
22      IF @NOTIFYCODE = 0
23         SHOWWINDOW w,GETSTATE(w,CHECK_5),RADIO_1
24      ENDIF
...


I will test my theory , but I'd like your comments.  So, am I on the right track?

Thanks,
Calvin

Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

Quote from: CodeTRUCKER on December 31, 2010, 11:48:01 AM

Now in the following [Your Preferred Code] line 23 below it looks like IWBASIC makes the assumption the default state of the check box is "unchecked" and therefore, the visibility of RADIO_1 is *hidden*.    Given this, it seems that *if* the default condition (GETSTATE) of CHECK_5 (unchecked) is not true (checked), THEN the opposite of the default is true and the radio button, RADIO_1 is made visible.   Essentially, everything is assumed to be "off" so only the coding for the opposite of the default is necessary.

[Your Preferred Code]
...
21   CASE CHECK_5
22      IF @NOTIFYCODE = 0
23         SHOWWINDOW w,GETSTATE(w,CHECK_5),RADIO_1
24      ENDIF
...

There are no ASSUMPTIONS made at all.
The equivalent ofSHOWWINDOW w,GETSTATE(w,CHECK_5),RADIO_1
isint x = GETSTATE(w,CHECK_5)
SHOWWINDOW w,x,RADIO_1
So when the button is clicked the checkbox is checked to see if it is 0 or 1
That value is used to show or hide the radiobutton accordingly.

Since controls are normally visible when created  (and we want to make the 2 radiobuttons hidden initially)
we had to have the SHOWWINDOW w,@swhide,RADIO_1
in the beginning.
The equivalent of SHOWWINDOW w,@swhide,RADIO_1
isSHOWWINDOW w,0,RADIO_1


LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

Rats.  I thought I was starting to understand some things.  If it wasn't for all the other "I feel like a dunce" posts on the forum, I'd go sit in a corner. :)

Ok, I'll try again after I digest your comments. 

Thanks,
Calvin
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

December 31, 2010, 12:31:53 PM #44 Last Edit: December 31, 2010, 12:45:44 PM by Larry McCaughn
Additional comment
I hope it is not the 21   CASE CHECK_5
22      IF @NOTIFYCODE = 0

that is confusing you.
controls send notification messages to the parent window.
those two lines are saying we are checking the notification message sent to window w's message handler from the CHECK_5 checkbox.
The notification code we are checking for is a click which happens to have a value of 0
We could also check for a double-click, got focus, or lost focus.
CONST BN_CLICKED = 0
CONST BN_DBLCLK = 5
CONST BN_SETFOCUS = 6
CONST BN_KILLFOCUS = 7
21   CASE CHECK_5
22      IF @NOTIFYCODE = BN_CLICKED
23         SHOWWINDOW w,GETSTATE(w,CHECK_5),RADIO_1
or
21   CASE CHECK_5
22      select @NOTIFYCODE
            case  BN_CLICKED
23            SHOWWINDOW w,GETSTATE(w,CHECK_5),RADIO_1

            case  BN_SETFOCUS

            case  BN_KILLFOCUS

            case  BN_CLICKED

         endselect
My visual designer has a ton of those messages already defined for the user as well as the style flags(hex values we were talking about earlier)

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

December 31, 2010, 06:01:10 PM #45 Last Edit: December 31, 2010, 06:06:58 PM by CodeTRUCKER
Hello,

How do I make sprites visible and invisible?

I have tried searching in the help, but I keep getting "No topics found" for searches.  What terms should I be searching for?

FYI - I am making various sprites visible only when a radio button is selected.  When radioA is selected, spriteA is visible and spriteB is hidden.  When radioB is selected, spriteA is invisible and spriteB is seen.

Thank you,
Calvin   
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

you just moved into an area I can't help you with - I don't mess with sprites and such.

But my initial thought is that you have to redraw everything and not draw the ones you want hidden.
But I can be totally wrong.
I will see if I can find anything in all my accumulated stuff.

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

LarryMc

Looking here on the forums I think I;m right.
Programming 7 - A Direct X Window Project.

This is from something Graham wrote for CBasic but the principle is the same.
QuoteThe main new item is that we are looking for @IDDXUPDATE messages.

These are messages which start to flow as soon as the DX screen is opened.

Each time a @IDDXUPDATE message is received, the program will call another subroutine (in this example called 'Update'), which contains all the processing to calculate new speeds and directions, and move objects and sprites in the scene.

Each update, the entire screen background, text, and sprites are all re-drawn.  This happens very quickly, and you can acheive much more than 100 frames redrawn a second - so the action appears continuous.
So, if all the sprite drawing is in a subroutine you just need to keep track of which sprites you don't want drawn.

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

CodeTRUCKER

December 31, 2010, 08:51:40 PM #48 Last Edit: December 31, 2010, 08:54:18 PM by CodeTRUCKER
@LarryM - Thanks for the info on @IDDXUPDATE.  I will attempt to work through and digest Graham's offering (tutorial) later.  Unfortunately, I am out of time and have to resort to making copies of the background bitmap and exchanging them as needed.  This will work fine for the present because none of the sprites that needed to be visible/invisible perform any movement.

Can you please direct me to where I can find information on showing/hiding background bitmaps in the Help?  Again, my searches are not very fruitful.

Thanks,
Calvin

[Edit - I just found the "LOADIMAGE" command, but feel free to comment.]
Calvin Waterbury


Truth, unlike opinion, tradition, etc. will always be able to stand on its own.  Truth is not a static, but a living entity and will perpetually impart life; therefore, any "truth" that does not or can not impart life can not be Truth.

LarryMc

Just a guess but it would seem that since you mentioned bitmaps that they all would be treated like sprites; it's just for a background the sprite would be the size of the screen and drawn first with all the other sprites on top,

That's what I guess based upon a first reading of the 2D/sprites section of help file.

Like I said, I don't mess with that stuff.

LarryMc
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library