DirectUIhwnd 1.0 : Emulation of MS control Released

Developed or developing a new product in PureBasic? Tell the world about it.
thefool
Always Here
Always Here
Posts: 5875
Joined: Sat Aug 30, 2003 5:58 pm
Location: Denmark

Post by thefool »

looks nice! Code code code!
localmotion34
Enthusiast
Enthusiast
Posts: 665
Joined: Fri Sep 12, 2003 10:40 pm
Location: Tallahassee, Florida

Post by localmotion34 »

Henrik wrote: it would be even more perfect if "you = the user", could ad other gadgets but addDUIlink's

Henrik
i didnt want to try that at first, but in working with CorelDraw12 today, i saw EXACTLY what you were talking about. on the right hand side of the MDI, there is sort of like a DUIhwnd where you click the top of a group, and a tabcontrol, or listbox, or whatever is on a window is hidden an shown. its pretty much like an outlook gadget for GADGETS.

i thought it was really cool, so i guess i will go ahead and make a DUIhwnd for that too. i think it will go something like this:

duipane(number,x,y,width,height,TYPE) where TYPE would be

#DUI_Link or #DUI_GADGET

then ill add an IF condition based on the TYPE that will either give you a DUIlink or DUI_gadget type of window, and each of the subwindows between the types will look a little different.

@NUM3 can you post the code of HOW you modified my LIB. i like the gradient look, so can you just shoot the code back at me and ill work further and re-compile.

Code: Select all

!.WHILE status != dwPassedOut
! Invoke AllocateDrink, dwBeerAmount
!MOV Mug, Beer
!Invoke Drink, Mug, dwBeerAmount
!.endw
Num3
PureBasic Expert
PureBasic Expert
Posts: 2812
Joined: Fri Apr 25, 2003 4:51 pm
Location: Portugal, Lisbon
Contact:

Post by Num3 »

localmotion34 wrote:@NUM3 can you post the code of HOW you modified my LIB. i like the gradient look, so can you just shoot the code back at me and ill work further and re-compile.
Eheheh...

No problem, i'll post it tonight!

I just changed 3 lines of code in a procedure and added the gradient code....
Num3
PureBasic Expert
PureBasic Expert
Posts: 2812
Joined: Fri Apr 25, 2003 4:51 pm
Location: Portugal, Lisbon
Contact:

Post by Num3 »

Here's my code (sorry no comments on the changes)

Code: Select all



DataSection
up1:IncludeBinary "up.bmp"
down:IncludeBinary "down.bmp"
EndDataSection 


Procedure InitDUI()
  ;UseJPEGImageDecoder()
  #duiup=$FF06
  #duidown=$FF07
  #WM_MOUSEHOVER = $2A1
  #WM_MOUSELEAVE = $2A3
  #BS_FLAT=$8000
  #TME_HOVER = 1
  #TME_LEAVE = 2
  #clnavy=$00800000
  Dim image.l(2)
  Structure inf
    gadgethght.l
    scrollgadget.l
    parent.l
    duinum.l[10]
    State.l[10]
    hwnd.l[10]
    parenthwnd.l[10]
    imagehwnd.l[10]
    button.l[10]
    buttonstate.l[10]
    width.l
    height.l[10]
    hyperlink.l[50]
    textgad.l[10]
    yvalue.l[10]
    scrollheight.l
  EndStructure
  image(0)=CatchImage(#PB_Any,?up1)
  image(1)=CatchImage(#PB_Any,?down)
  NewList dui.inf()
  Dim icon.l(100)
EndProcedure

Procedure checkscrollheight(DUIpane)
  scrollmax=20
  SelectElement(dui(),DUIpane)
  For a=0 To 9
    If dui()\height[a]=0
      scrollmax=dui()\yvalue[a-1]+dui()\height[a-1]
      Break
    EndIf
  Next
  If scrollmax>dui()\scrollheight
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,scrollmax+10)
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+30,dui()\gadgethght,#SWP_NOMOVE)
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN)
  Else
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,dui()\scrollheight)
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+13,dui()\gadgethght,#SWP_NOMOVE)
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN)
  EndIf
EndProcedure

Procedure moveproc(hwnd,msg,wParam,lParam)
  Select msg
    Case #duiup
      SelectElement(dui(),lParam)
      heighttomove=dui()\height[wParam]-20
      For a=wParam+1 To 9
        height=dui()\height[a]-20
        yval=dui()\yvalue[a]-heighttomove
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE)
        dui()\yvalue[a]=yval
      Next
      checkscrollheight(lParam)
      ProcedureReturn 0
    Case #duidown
      SelectElement(dui(),lParam)
      heighttomove=dui()\height[wParam]-20
      For a=wParam+1 To 9
        height=dui()\height[a]
        yval=dui()\yvalue[a]+heighttomove
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE)
        dui()\yvalue[a]=yval
      Next
      checkscrollheight(lParam)
      ProcedureReturn 0
  EndSelect
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc2"),hwnd,msg,wParam,lParam)
EndProcedure

Procedure clickproc(hwnd,msg,wParam,lParam)
  Select msg
    Case #WM_MOUSEMOVE
      Structure myTRACKMOUSEEVENT
        cbSize.l
        dwFlags.l
        hwndTrack.l
        dwHoverTime.l
      EndStructure
      mte.myTRACKMOUSEEVENT
      mte\cbSize = SizeOf(myTRACKMOUSEEVENT)
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_DEFPUSHBUTTON,#True)
      mte\dwFlags = #TME_LEAVE
      mte\hwndTrack = hwnd
      TrackMouseEvent_(mte)
    Case #WM_MOUSELEAVE 
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_PUSHBUTTON,#True)
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc3"),hwnd,msg,wParam,lParam)
EndProcedure 

Procedure buttonproc(hwnd,msg,wParam,lParam)
  Select msg
    Case #WM_CTLCOLORSTATIC
      SetBkMode_(wParam,#TRANSPARENT	)
      blue = CreatePatternBrush_(UseImage(200))
      ForEach dui()
        For a=0 To 9
          If IsGadget(dui()\textgad[a])And lParam=GadgetID(dui()\textgad[a])
            SetTextColor_(wParam,#White) ;Text colour
             EndIf
        Next
      Next
      ProcedureReturn blue
    Case #WM_COMMAND
      parent=GetParent_(hwnd)
      ForEach dui()
        For a=0 To 9
          If parent=dui()\hwnd[a]
            currentdui=ListIndex(dui())
            scrollparent=GetParent_(dui()\hwnd[a])
            If dui()\State[a]=1
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,22,#SWP_NOMOVE)
              dui()\State[a]=0
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui()))
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(1)))
            ElseIf dui()\State[a]=0
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE)
              dui()\State[a]=1
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui()))
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
            EndIf
            Break
          EndIf
        Next
      Next
      ProcedureReturn 0
    Case #WM_LBUTTONDBLCLK
      parent=GetParent_(hwnd)
      ForEach dui()
        For a=0 To 9
          If parent=dui()\hwnd[a]
            currentdui=ListIndex(dui())
            scrollparent=GetParent_(dui()\hwnd[a])
            If dui()\State[a]=1
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,20,#SWP_NOMOVE)
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_UNCHECKED,0)
              dui()\State[a]=0
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui()))
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(1)))
            ElseIf dui()\State[a]=0
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE)
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_CHECKED,0)
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui()))
              dui()\State[a]=1
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
            EndIf
            Break
          EndIf
        Next
      Next
  EndSelect
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc1"),hwnd,msg,wParam,lParam)
EndProcedure

Procedure DUIpane(number,x,y,panewidth,height,border); Creates A Pane To House DUIhwnd's
  If border=0
    border=#PB_ScrollArea_Single
  EndIf
  AddElement(dui())
  SelectElement(dui(),number)
  dui()\gadgethght=height
  dui()\width=panewidth-10
  scroll=ScrollAreaGadget(#PB_Any,x,y,panewidth,height,panewidth-5,height-20,30,border )
  dui()\scrollgadget=scroll
  dui()\scrollheight=height-20
  child=GetWindow_(GadgetID(scroll),#GW_CHILD)
  dui()\parent=child
  SetProp_(child,"OldProc2",SetWindowLong_(child, #GWL_WNDPROC, @moveproc()))
  icon(number)=CreateImage(number+200,dui()\width,22)
  
  i = dui()\width
  Color1=RGB($80,$80,$80)
  Color2=GetSysColor_(4)
  sRed.f   = Red(Color1)   : r.f = (Red  (Color1) - Red  (Color2))/i 
  sGreen.f = Green(Color1) : g.f = (Green(Color1) - Green(Color2))/i 
  sBlue.f  = Blue(Color1)  : b.f = (Blue (Color1) - Blue (Color2))/i 
  
  StartDrawing(ImageOutput()) 
  For a = 0 To i-1 
    xx.f = sRed   - a*r 
    yy.f = sGreen - a*g 
    zz.f = sBlue  - a*b 
    Line(a,0,0,25,RGB(xx,yy,zz)) 
  Next a 
  
  StopDrawing()
  
  ProcedureReturn scroll
EndProcedure

Procedure AddDUIhwnd(DUIpane,Position,text.s); Add A DUIhwnd that Can Contain Links To Commands
  SelectElement(dui(),DUIpane)
  dui()\duinum[Position]=Position
  dui()\height[Position]=50
  totalheight=20
  If Position=0
    dui()\yvalue[Position]=20
  ElseIf Position<>0
    For a=0 To Position-1
      totalheight=totalheight+dui()\height[a]+20
    Next
    dui()\yvalue[Position]=totalheight
  EndIf
  mainhandle=OpenWindow(#PB_Any,5,dui()\yvalue[Position],dui()\width,50,#PB_Window_Invisible,"")
  dui()\hwnd[Position]=WindowID(mainhandle)
  SetWindowLong_(dui()\hwnd[Position],#GWL_STYLE, #WS_CHILD|#WS_BORDER|#WS_CLIPCHILDREN|#WS_CLIPSIBLINGS )
  SetParent_(dui()\hwnd[Position],dui()\parent)
  CreateGadgetList(dui()\hwnd[Position])
  dui()\imagehwnd[Position]=ImageGadget(#PB_Any,0,0,dui()\width,20,0)
  SetGadgetState(dui()\imagehwnd[Position],icon(DUIpane))
  If region
    SetWindowRgn_(dui()\hwnd[Position],region,#True)
  EndIf 
  dui()\button[Position]=ButtonGadget(#PB_Any,dui()\width-22,2,16,16,"^")
  style = GetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE)
  toggleStyle=style|$1083|$8000|#BS_BITMAP	
  SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE, toggleStyle)
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
  SetProp_(GadgetID(dui()\button[Position]),"OldProc3",SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_WNDPROC, @clickproc()))
  SetParent_(GadgetID(dui()\button[Position]),GadgetID(dui()\imagehwnd[Position]))
  dui()\textgad[Position]=TextGadget(#PB_Any,0,4,dui()\width-19,20,text,#PB_Text_Center)
  SetParent_(GadgetID(dui()\textgad[Position]),GadgetID(dui()\imagehwnd[Position]))
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETCHECK,#BST_CHECKED,0)
  SetProp_(GadgetID(dui()\imagehwnd[Position]),"OldProc1",SetWindowLong_(GadgetID(dui()\imagehwnd[Position]), #GWL_WNDPROC, @buttonproc()))
  ; region=Createroundrectrgn_(0,0,dui()\width+1,56,9,9)
  ; If region
    ; SetWindowRgn_(dui()\hwnd[Position],region,#True)
  ; EndIf 
  ShowWindow_(dui()\hwnd[Position],#SW_SHOW)
  SetWindowPos_(dui()\hwnd[Position],0,0,0,dui()\width,50,#SWP_NOMOVE)
  RedrawWindow_(dui()\hwnd[Position],0,0,#RDW_ALLCHILDREN   )
  UpdateWindow_(dui()\hwnd[Position])
  dui()\State[Position]=1
  checkscrollheight(DUIpane)
EndProcedure

Procedure addDUIlink(DUIpane,DuiHwnd,Position,text.s,color.l); Add A Link To Execute A Command Or List An Item You Want To Display
  SelectElement(dui(),DUIpane)
  UseGadgetList(dui()\hwnd[DuiHwnd])
  hyperlink=HyperLinkGadget(#PB_Any, 5, (Position*20) +25,dui()\width,20,text, color)
  RedrawWindow_(dui()\hwnd[DuiHwnd],0,0,#RDW_ALLCHILDREN   )
  ShowWindow_(dui()\hwnd[DuiHwnd],#SW_SHOWNORMAL)
  UpdateWindow_(dui()\hwnd[DuiHwnd])
  If Position =0
    dui()\height[DuiHwnd]=50
  ElseIf Position>0
    dui()\height[DuiHwnd]=50+(Position*20)
    ; region=Createroundrectrgn_(0,0,dui()\width+1,dui()\height[DuiHwnd]+5,9,9)
    ; If region
      ; SetWindowRgn_(dui()\hwnd[DuiHwnd],region,#True)
    ; EndIf 
    SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE)
    If Position>=1
      For a=DuiHwnd+1 To 9
        SetWindowPos_(dui()\hwnd[a],0,5,dui()\yvalue[a]+(20),0,0,#SWP_NOSIZE)
        dui()\yvalue[a]=dui()\yvalue[a]+(20)
      Next
    EndIf 
  EndIf
  checkscrollheight(DUIpane)
  ProcedureReturn hyperlink
EndProcedure

Procedure HideDUI(DUIpane,DuiHwnd,State);Hide Or Show And Individial DUIhwnd
  If State=0
    If dui()\State[DuiHwnd]=0
      SelectElement(dui(),DUIpane)
      parent=GetParent_(dui()\hwnd[DuiHwnd])
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE)
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_CHECKED,0)
      dui()\State[DuiHwnd]=1
      PostMessage_(parent,#duidown,DuiHwnd,ListIndex(dui()))
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
    EndIf
  ElseIf State=1
    If dui()\State[DuiHwnd]=1
      SelectElement(dui(),DUIpane)
      parent=GetParent_(dui()\hwnd[DuiHwnd])
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,20,#SWP_NOMOVE)
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_UNCHECKED,0)
      dui()\State[DuiHwnd]=0
      PostMessage_(parent,#duiup,DuiHwnd,ListIndex(dui()))
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(1)))
    EndIf
  EndIf
EndProcedure

Procedure GetDUIstate(duinumber);Determine Whether a DUIhwnd is Expanded Or Collapsed
  SelectElement(dui(),duinumber)
  returnvalue=dui()\State[duinumber]
  ProcedureReturn returnvalue
EndProcedure

; Procedure DUIExpand(DUIpane,State)
  ; If State= 0 Or State=1
  ; SelectElement(dui(),DUIpane)
  ; For a=0 To 9
    ; If IsWindow_(dui()\hwnd[a])
      ; HideDUI(DUIpane,a,State)
    ; EndIf 
  ; Next 
; EndIf 
; EndProcedure 


thefool
Always Here
Always Here
Posts: 5875
Joined: Sat Aug 30, 2003 5:58 pm
Location: Denmark

Post by thefool »

did the dropping of jpeglib help on filesize?
Henrik
Enthusiast
Enthusiast
Posts: 404
Joined: Sat Apr 26, 2003 5:08 pm
Location: Denmark

Post by Henrik »

Indeed TF in my case about from 71k to 31k only with num3 changes. :wink:

@localmotion34 i was thinkink maybe you should let the user have some more options in the AddDUIhwnd
Like #Dui_Color the shape 'n and some other stuff, i forgot now cus i too tired think straight. :?

About support for other gadgets he. he.., sounds very cool indeed.. :D

Best regrads
Henrik
Pantcho!!
Enthusiast
Enthusiast
Posts: 538
Joined: Tue Feb 24, 2004 3:43 am
Location: Israel
Contact:

Post by Pantcho!! »

First of all great lib localmotion34 !!

it looks very good with num3 addon!

i have few suggestions and i think it will be perfect lib

- the gardient like num3 made would be from a selection of 2 colors, for example blue and white...
- Background color of the DUI
- Background color of the Links
- color of the DUIWND title text!
- maybe a small 16x16 icon option on the left side of the DUIWND title

this will be perfect!! hehe

thats it :)

looking forward for re-packing btw...
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

Nice work.

One thought though (if you want this Gadget to be really usable):
the over all size of the Gadget should not change if the vertical scroll shows up.

This said, the vertical scroll should not make the Gadget wider, the size should remain the same.
pure_wishmaster
New User
New User
Posts: 3
Joined: Tue Dec 20, 2005 9:38 pm
Contact:

Post by pure_wishmaster »

I have a problem,
Image
my gradient in the menu isn´t correctly.
i have seen by num3 its right but my menu isn´t correct!

sorry for my english!
My Programms "Gallerymaker2005".
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

I can't seem to download the zip file. Well I can download it, but not open it! Seems to think it's a text file!
I may look like a mule, but I'm not a complete ass.
PB
PureBasic Expert
PureBasic Expert
Posts: 7581
Joined: Fri Apr 25, 2003 5:24 pm

Post by PB »

Winzip says it's corrupted when I download it, too.
I compile using 5.31 (x86) on Win 7 Ultimate (64-bit).
"PureBasic won't be object oriented, period" - Fred.
SFSxOI
Addict
Addict
Posts: 2970
Joined: Sat Dec 31, 2005 5:24 pm
Location: Where ya would never look.....

Post by SFSxOI »

My winzip says its corrupted also
radtke.i.j
New User
New User
Posts: 9
Joined: Sat Jan 28, 2006 8:58 pm
Location: Germany, MVP

Post by radtke.i.j »

[quote="Num3"]Here's my code (sorry no comments on the changes)

who can optimize the code of Num3 for PB4 ????

Thank you me now already !!
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

who can optimize the code of Num3 for PB4 ????
I guess I can:

Code: Select all


Procedure InitDUI() 
  #duiup=$FF06 
  #duidown=$FF07 
  #WM_MOUSEHOVER = $2A1 
  #WM_MOUSELEAVE = $2A3 
  #BS_FLAT=$8000 
  #TME_HOVER = 1 
  #TME_LEAVE = 2 
  #clnavy=$00800000 
  Global Dim image.l(2) 
  Structure inf 
    gadgethght.l 
    scrollgadget.l 
    parent.l 
    duinum.l[10] 
    State.l[10] 
    hwnd.l[10] 
    parenthwnd.l[10] 
    imagehwnd.l[10] 
    button.l[10] 
    buttonstate.l[10] 
    width.l 
    height.l[10] 
    hyperlink.l[50] 
    textgad.l[10] 
    yvalue.l[10] 
    scrollheight.l 
  EndStructure 
  image(0)=CatchImage(#PB_Any,?up) 
  image(1)=CatchImage(#PB_Any,?down) 
  Global NewList dui.inf() 
  Global Dim icon.l(100) 
EndProcedure 

Procedure checkscrollheight(DUIpane) 
  scrollmax=20 
  SelectElement(dui(),DUIpane) 
  For a=0 To 9 
    If dui()\height[a]=0 
      scrollmax=dui()\yvalue[a-1]+dui()\height[a-1] 
      Break 
    EndIf 
  Next 
  If scrollmax>dui()\scrollheight 
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,scrollmax+10) 
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+30,dui()\gadgethght,#SWP_NOMOVE) 
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN) 
  Else 
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,dui()\scrollheight) 
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+13,dui()\gadgethght,#SWP_NOMOVE) 
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN) 
  EndIf 
EndProcedure 

Procedure moveproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #duiup 
      SelectElement(dui(),lParam) 
      heighttomove=dui()\height[wParam]-20 
      For a=wParam+1 To 9 
        height=dui()\height[a]-20 
        yval=dui()\yvalue[a]-heighttomove 
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE) 
        dui()\yvalue[a]=yval 
      Next 
      checkscrollheight(lParam) 
      ProcedureReturn 0 
    Case #duidown 
      SelectElement(dui(),lParam) 
      heighttomove=dui()\height[wParam]-20 
      For a=wParam+1 To 9 
        height=dui()\height[a] 
        yval=dui()\yvalue[a]+heighttomove 
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE) 
        dui()\yvalue[a]=yval 
      Next 
      checkscrollheight(lParam) 
      ProcedureReturn 0 
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc2"),hwnd,msg,wParam,lParam) 
EndProcedure 

Procedure clickproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #WM_MOUSEMOVE 
      Structure myTRACKMOUSEEVENT 
        cbSize.l 
        dwFlags.l 
        hwndTrack.l 
        dwHoverTime.l 
      EndStructure 
      mte.myTRACKMOUSEEVENT 
      mte\cbSize = SizeOf(myTRACKMOUSEEVENT) 
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_DEFPUSHBUTTON,#True) 
      mte\dwFlags = #TME_LEAVE 
      mte\hwndTrack = hwnd 
      TrackMouseEvent_(mte) 
    Case #WM_MOUSELEAVE 
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_PUSHBUTTON,#True) 
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc3"),hwnd,msg,wParam,lParam) 
EndProcedure 

Procedure buttonproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #WM_CTLCOLORSTATIC 
      SetBkMode_(wParam,#TRANSPARENT   ) 
      blue = CreatePatternBrush_(ImageID(200)) 
      ForEach dui() 
        For a=0 To 9 
          If IsGadget(dui()\textgad[a])And lParam=GadgetID(dui()\textgad[a]) 
            SetTextColor_(wParam,#White) ;Text colour 
             EndIf 
        Next 
      Next 
      ProcedureReturn blue 
    Case #WM_COMMAND 
      parent=GetParent_(hwnd) 
      ForEach dui() 
        For a=0 To 9 
          If parent=dui()\hwnd[a] 
            currentdui=ListIndex(dui()) 
            scrollparent=GetParent_(dui()\hwnd[a]) 
            If dui()\State[a]=1 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,22,#SWP_NOMOVE) 
              dui()\State[a]=0 
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui())) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(1))) 
            ElseIf dui()\State[a]=0 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE) 
              dui()\State[a]=1 
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui())) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
            EndIf 
            Break 
          EndIf 
        Next 
      Next 
      ProcedureReturn 0 
    Case #WM_LBUTTONDBLCLK 
      parent=GetParent_(hwnd) 
      ForEach dui() 
        For a=0 To 9 
          If parent=dui()\hwnd[a] 
            currentdui=ListIndex(dui()) 
            scrollparent=GetParent_(dui()\hwnd[a]) 
            If dui()\State[a]=1 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,20,#SWP_NOMOVE) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_UNCHECKED,0) 
              dui()\State[a]=0 
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui())) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(1))) 
            ElseIf dui()\State[a]=0 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_CHECKED,0) 
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui())) 
              dui()\State[a]=1 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
            EndIf 
            Break 
          EndIf 
        Next 
      Next 
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc1"),hwnd,msg,wParam,lParam) 
EndProcedure 

Procedure DUIpane(number,x,y,panewidth,height,border); Creates A Pane To House DUIhwnd's 
  If border=0 
    border=#PB_ScrollArea_Single 
  EndIf 
  AddElement(dui()) 
  SelectElement(dui(),number) 
  dui()\gadgethght=height 
  dui()\width=panewidth-10 
  scroll=ScrollAreaGadget(#PB_Any,x,y,panewidth,height,panewidth-5,height-20,30,border ) 
  dui()\scrollgadget=scroll 
  dui()\scrollheight=height-20 
  child=GetWindow_(GadgetID(scroll),#GW_CHILD) 
  dui()\parent=child 
  SetProp_(child,"OldProc2",SetWindowLong_(child, #GWL_WNDPROC, @moveproc())) 
  icon(number)=CreateImage(number+200,dui()\width,22) 
  
  i = dui()\width 
  Color1=RGB($80,$80,$80) 
  Color2=GetSysColor_(4) 
  sRed.f   = Red(Color1)   : r.f = (Red  (Color1) - Red  (Color2))/i 
  sGreen.f = Green(Color1) : g.f = (Green(Color1) - Green(Color2))/i 
  sBlue.f  = Blue(Color1)  : b.f = (Blue (Color1) - Blue (Color2))/i 
  
  StartDrawing(ImageOutput(number+200)) 
  For a = 0 To i-1 
    xx.f = sRed   - a*r 
    yy.f = sGreen - a*g 
    zz.f = sBlue  - a*b 
    Line(a,0,0,25,RGB(xx,yy,zz)) 
  Next a 
  
  StopDrawing() 
  
  ProcedureReturn scroll 
EndProcedure 

Procedure AddDUIhwnd(DUIpane,Position,text.s); Add A DUIhwnd that Can Contain Links To Commands 
  SelectElement(dui(),DUIpane) 
  dui()\duinum[Position]=Position 
  dui()\height[Position]=50 
  totalheight=20 
  If Position=0 
    dui()\yvalue[Position]=20 
  ElseIf Position<>0 
    For a=0 To Position-1 
      totalheight=totalheight+dui()\height[a]+20 
    Next 
    dui()\yvalue[Position]=totalheight 
  EndIf 
  mainhandle=OpenWindow(#PB_Any,5,dui()\yvalue[Position],dui()\width,50,"",#PB_Window_Invisible) 
  dui()\hwnd[Position]=WindowID(mainhandle) 
  SetWindowLong_(dui()\hwnd[Position],#GWL_STYLE, #WS_CHILD|#WS_BORDER|#WS_CLIPCHILDREN|#WS_CLIPSIBLINGS ) 
  SetParent_(dui()\hwnd[Position],dui()\parent) 
  CreateGadgetList(dui()\hwnd[Position]) 
  dui()\imagehwnd[Position]=ImageGadget(#PB_Any,0,0,dui()\width,20,0) 
  SetGadgetState(dui()\imagehwnd[Position],icon(DUIpane)) 
  If region 
    SetWindowRgn_(dui()\hwnd[Position],region,#True) 
  EndIf 
  dui()\button[Position]=ButtonGadget(#PB_Any,dui()\width-22,2,16,16,"^") 
  style = GetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE) 
  toggleStyle=style|$1083|$8000|#BS_BITMAP    
  SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE, toggleStyle) 
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
  SetProp_(GadgetID(dui()\button[Position]),"OldProc3",SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_WNDPROC, @clickproc())) 
  SetParent_(GadgetID(dui()\button[Position]),GadgetID(dui()\imagehwnd[Position])) 
  dui()\textgad[Position]=TextGadget(#PB_Any,0,4,dui()\width-19,20,text,#PB_Text_Center) 
  SetParent_(GadgetID(dui()\textgad[Position]),GadgetID(dui()\imagehwnd[Position])) 
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETCHECK,#BST_CHECKED,0) 
  SetProp_(GadgetID(dui()\imagehwnd[Position]),"OldProc1",SetWindowLong_(GadgetID(dui()\imagehwnd[Position]), #GWL_WNDPROC, @buttonproc())) 
  ; region=Createroundrectrgn_(0,0,dui()\width+1,56,9,9) 
  ; If region 
    ; SetWindowRgn_(dui()\hwnd[Position],region,#True) 
  ; EndIf 
  ShowWindow_(dui()\hwnd[Position],#SW_SHOW) 
  SetWindowPos_(dui()\hwnd[Position],0,0,0,dui()\width,50,#SWP_NOMOVE) 
  RedrawWindow_(dui()\hwnd[Position],0,0,#RDW_ALLCHILDREN   ) 
  UpdateWindow_(dui()\hwnd[Position]) 
  dui()\State[Position]=1 
  checkscrollheight(DUIpane) 
EndProcedure 

Procedure addDUIlink(DUIpane,DuiHwnd,Position,text.s,color.l); Add A Link To Execute A Command Or List An Item You Want To Display 
  SelectElement(dui(),DUIpane) 
  UseGadgetList(dui()\hwnd[DuiHwnd]) 
  hyperlink=HyperLinkGadget(#PB_Any, 5, (Position*20) +25,dui()\width,20,text, color) 
  RedrawWindow_(dui()\hwnd[DuiHwnd],0,0,#RDW_ALLCHILDREN   ) 
  ShowWindow_(dui()\hwnd[DuiHwnd],#SW_SHOWNORMAL) 
  UpdateWindow_(dui()\hwnd[DuiHwnd]) 
  If Position =0 
    dui()\height[DuiHwnd]=50 
  ElseIf Position>0 
    dui()\height[DuiHwnd]=50+(Position*20) 
    ; region=Createroundrectrgn_(0,0,dui()\width+1,dui()\height[DuiHwnd]+5,9,9) 
    ; If region 
      ; SetWindowRgn_(dui()\hwnd[DuiHwnd],region,#True) 
    ; EndIf 
    SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE) 
    If Position>=1 
      For a=DuiHwnd+1 To 9 
        SetWindowPos_(dui()\hwnd[a],0,5,dui()\yvalue[a]+(20),0,0,#SWP_NOSIZE) 
        dui()\yvalue[a]=dui()\yvalue[a]+(20) 
      Next 
    EndIf 
  EndIf 
  checkscrollheight(DUIpane) 
  ProcedureReturn hyperlink 
EndProcedure 

Procedure HideDUI(DUIpane,DuiHwnd,State);Hide Or Show And Individial DUIhwnd 
  If State=0 
    If dui()\State[DuiHwnd]=0 
      SelectElement(dui(),DUIpane) 
      parent=GetParent_(dui()\hwnd[DuiHwnd]) 
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_CHECKED,0) 
      dui()\State[DuiHwnd]=1 
      PostMessage_(parent,#duidown,DuiHwnd,ListIndex(dui())) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
    EndIf 
  ElseIf State=1 
    If dui()\State[DuiHwnd]=1 
      SelectElement(dui(),DUIpane) 
      parent=GetParent_(dui()\hwnd[DuiHwnd]) 
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,20,#SWP_NOMOVE) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_UNCHECKED,0) 
      dui()\State[DuiHwnd]=0 
      PostMessage_(parent,#duiup,DuiHwnd,ListIndex(dui())) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(1))) 
    EndIf 
  EndIf 
EndProcedure 

Procedure GetDUIstate(duinumber);Determine Whether a DUIhwnd is Expanded Or Collapsed 
  SelectElement(dui(),duinumber) 
  returnvalue=dui()\State[duinumber] 
  ProcedureReturn returnvalue 
EndProcedure 

; Procedure DUIExpand(DUIpane,State) 
  ; If State= 0 Or State=1 
  ; SelectElement(dui(),DUIpane) 
  ; For a=0 To 9 
    ; If IsWindow_(dui()\hwnd[a]) 
      ; HideDUI(DUIpane,a,State) 
    ; EndIf 
  ; Next 
; EndIf 
; EndProcedure 

;************************************************
;            Test program - remove this 
;************************************************

OpenWindow(0,0,0,800,600,"")
CreateGadgetList(WindowID(0))
InitDUI()
DUIPane(0,20,20,100,200,0)
addDUIHwnd(0,0,"test")
link=addDUIlink(0,0,0,"Message Box",$FF0000) 

Repeat
  ev=WaitWindowEvent()
  If ev=#PB_Event_Gadget
    If EventGadget()=link
      MessageRequester("Notice", "You pressed a link that works!",$C0)
    EndIf
  EndIf
Until ev=#PB_Event_CloseWindow

;*************************************************
;               End Test Program
;*************************************************

DataSection
up:
Data.b $42,$4D,$38,$03,$00,$00,$00,$00,$00,$00,$36,$00,$00,$00,$28,$00
Data.b $00,$00,$10,$00,$00,$00,$10,$00,$00,$00,$01,$00,$18,$00,$00,$00
Data.b $00,$00,$02,$03,$00,$00,$12,$0B,$00,$00,$12,$0B,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3D,$4D,$20,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$36,$45,$1C,$3D,$4D,$23,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$41,$51,$23,$3D,$49,$20,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$32,$3D,$1C,$45,$55,$23,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$41,$51,$23,$3D,$4D,$20,$41,$51,$23,$2E,$3A
Data.b $19,$3A,$49,$20,$3D,$4D,$23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$49,$59,$27,$41,$51,$23,$3A,$49
Data.b $20,$32,$3D,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$3A,$45,$1C,$3A,$49
Data.b $20,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$45,$20,$32,$41,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$45,$55,$23,$3A,$49,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$45,$20,$32,$3D,$1C,$3A,$45,$20,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$4D,$61,$2B,$41,$51,$23,$3A,$49,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$32,$3D,$1C,$32,$3D,$19,$32,$41,$1C,$45,$55
Data.b $27,$3A,$49,$20,$3D,$49,$20,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$2B,$36,$19,$49,$59,$27,$49,$59
Data.b $27,$32,$3D,$19,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$41,$51,$23,$45,$55
Data.b $23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00
down:
Data.b $42,$4D,$38,$03,$00,$00,$00,$00,$00,$00,$36,$00,$00,$00,$28,$00
Data.b $00,$00,$10,$00,$00,$00,$10,$00,$00,$00,$01,$00,$18,$00,$00,$00
Data.b $00,$00,$02,$03,$00,$00,$12,$0B,$00,$00,$12,$0B,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$45,$55,$23,$41,$51
Data.b $23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$32,$3D,$19,$49,$59,$27,$49,$59
Data.b $27,$2B,$36,$19,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$3D,$49,$20,$3A,$49,$20,$45,$55,$27,$32,$41
Data.b $1C,$32,$3D,$19,$32,$3D,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$49,$20,$41,$51,$23,$4D,$61,$2B,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$3A,$45,$20,$32,$3D,$1C,$3A,$45,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$49,$20,$45,$55,$23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$32,$41,$1C,$3A,$45,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$3A,$49,$20,$3A,$45
Data.b $1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$32,$3D,$1C,$3A,$49,$20,$41,$51
Data.b $23,$49,$59,$27,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$3D,$4D,$23,$3A,$49,$20,$2E,$3A,$19,$41,$51
Data.b $23,$3D,$4D,$20,$41,$51,$23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3D,$4D,$20,$45,$55,$23,$32,$3D,$1C,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$3D,$4D,$20,$3D,$49,$20,$41,$51,$23,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3D,$4D,$23,$36,$45,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$3D,$4D,$20,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00
EndDataSection
BERESHEIT
radtke.i.j
New User
New User
Posts: 9
Joined: Sat Jan 28, 2006 8:58 pm
Location: Germany, MVP

Post by radtke.i.j »

netmaestro wrote:
who can optimize the code of Num3 for PB4 ????
I guess I can:

Code: Select all


Procedure InitDUI() 
  #duiup=$FF06 
  .....
thank you netmaestro !!!!

Greetings from old Europe, Germany
Post Reply