OSDev.org

The Place to Start for Operating System Developers
It is currently Mon Mar 18, 2024 10:37 pm

All times are UTC - 6 hours




Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Implementing a windows api system call
PostPosted: Mon Oct 11, 2021 7:47 am 
Offline

Joined: Sat Oct 09, 2021 8:29 am
Posts: 7
Location: Lisbon portugal
Im want to implement a sys call windows gest ;
To my code gest windows.
Can be c
Free basic code
Can some one have a small code of terminate and stay residente system call
Code:
const true as boolean=-1
const false as boolean=0
const TitleBarSize as integer=16
const maxWin as integer=10
type windows
          x as integer
          y as integer
          w as integer
          h as integer
          images As Any Ptr
          index as integer
          id as integer
          title as string
          titlebar as boolean
end type               
               
type wwin
          win(0 to maxWin) as windows
          count as integer
          wins(0 to maxWin) as integer
end type               
               
type clock
          x as integer
          y as integer
          r as integer
          h as integer
          m as integer
          s as integer
end type               
               
               
sub drawclock(c as clock,ww  As Any Ptr)
          dim pi as double= 3.1415927
          dim xx1 as double
          dim yy1 as double
          dim xx3 as double
          dim yy3 as double
          dim xx2 as double
          dim yy2 as double
          dim x as integer
          dim y as integer
          dim xxx as integer
                         
                         
          circle ww,(c.x+c.r,c.y+c.r),c.r,rgb(128,128,128),,,1.0,f
                         
          for xxx=1 to 12
                    xx2=xxx               
                    xx3=c.r               
                    xx1=xx3+(xx3*0.8)*sin(xx2/6*pi)
                                   
                    yy1=xx3-(xx3*0.8)*cos(xx2/6*pi)
                    x=xx1               
                    y=yy1               
                    draw string ww,(c.x+x,c.y+y),ltrim$(str$(xxx)),rgb(0,128,255)
          next xxx               
                         
                         
          xx2=c.s               
          xx3=c.r               
          xx1=xx3+(xx3*0.8)*sin(xx2/30*pi)
                         
          yy1=xx3-(xx3*0.8)*cos(xx2/30*pi)
          x=xx1               
          y=yy1               
          line ww,(c.x+c.r,c.y+c.r)-(c.x+x,c.y+y),rgb(255,255,255)
          xx2=c.m               
          xx1=xx3+(xx3*0.5)*sin(xx2/30*pi)
                         
          yy1=xx3-(xx3*0.5)*cos(xx2/30*pi)
          x=xx1               
          y=yy1               
          line ww,(c.x+c.r,c.y+c.r)-(c.x+x,c.y+y),rgb(0,0,255)
          xx2=c.h               
          if xx2 > 12.0 then xx2=xx2-12.0
          xx1=xx3+(xx3*0.2)*sin(xx2/6*pi)
                         
          yy1=xx3-(xx3*0.2)*cos(xx2/6*pi)
          x=xx1               
          y=yy1               
          line ww,(c.x+c.r,c.y+c.r)-(c.x+x,c.y+y),rgb(0,0,0)
                         
                         
end sub               
               
sub moveToFront(w as wwin,i as integer)
          dim a as integer
          dim b as integer
          dim c as integer
          b=w.wins(i)
          for a =i to w.count-2
                    c=w.wins(a+1)
                    w.wins(a)=c
          next a               
          w.wins(w.count-1)=b
                         
end sub               
               
               
sub closeG(w as wwin)
          dim a as integer
          for a=0 to maxWin-1
                    ImageDestroy w.win(a).images
          next               
end sub               
               
sub drawWindows(byref w as wwin)
          dim a as integer
          ScreenSync
          ScreenLock
          for a= 0 to w.count-1
                    if w.win(a).titlebar then
                              put (w.win(w.wins(a)).x,w.win(w.wins(a)).y),w.win(w.wins(a)).images,trans
                              else               
                              put (w.win(w.wins(a)).x,w.win(w.wins(a)).y),w.win(w.wins(a)).images,pset
                    end if               
          next a               
          ScreenUnlock
                         
                         
end sub               
               
sub drawClsWindow(w as wwin,i as integer)
          line w.win(i).images,(0,TitleBarSize+1)-(w.win(i).w,w.win(i).h),rgb(255,255,255),bf
          line w.win(i).images,(0,TitleBarSize)-(w.win(i).w-1,w.win(i).h-1),rgb(0,0,0),b
end sub                 
               
sub drawTitleBar(byref w as wwin,i as integer)
                         
          circle w.win(i).images,(TitleBarSize/2,TitleBarSize/2),TitleBarSize/2,rgb(0,128,255),,,1.0,f
          circle w.win(i).images,(w.win(i).w-TitleBarSize/2,TitleBarSize/2),TitleBarSize/2,rgb(0,128,255),,,1.0,f
          circle w.win(i).images,(TitleBarSize/2,TitleBarSize/2),TitleBarSize/2,rgb(0,0,0)
          circle w.win(i).images,(w.win(i).w-TitleBarSize/2,TitleBarSize/2),TitleBarSize/2,rgb(0,0,0)
          line w.win(i).images,(TitleBarSize/2,0)-(w.win(i).w-TitleBarSize/2,TitleBarSize),rgb(0,128,255),bf
          Draw String w.win(i).images,(TitleBarSize/2+8, 4), w.win(i).title,rgb(255,255,255)
          line w.win(i).images,(0,TitleBarSize)-(w.win(i).w,TitleBarSize),rgb(0,0,0)
          line w.win(i).images,(TitleBarSize/2,0)-(w.win(i).w-TitleBarSize/2,0),rgb(0,0,0)
end sub               
               
function clickons(w as wwin,x as integer,y as integer) as integer
          dim a as integer
          dim b as integer
          dim c as integer=-1
          for a=w.count-1 to 1 step -1
                    if x> w.win(w.wins(a)).x and x<w.win(w.wins(a)).x+w.win(w.wins(a)).w and y>w.win(w.wins(a)).y and y<w.win(w.wins(a)).y+w.win(w.wins(a)).h then
                              c=a               
                              a=0               
                    end if               
          next a               
          return c               
end function
               
               
function creatWindows(byref w as wwin,xx as integer,yy as integer, ww as integer ,hh as integer, ccolors as ulong,title as string,tbar as boolean) as integer
          dim r as integer=-1
          if w.count < maxwin -1 then
                    w.count=w.count+1
                    if tbar then
                              w.win(w.count-1).images=ImageCreate( ww,hh)
                              else               
                              w.win(w.count-1).images=ImageCreate( ww,hh,ccolors,16 )
                    end if               
                                   
                    'line w.win(w.count-1).images,(0,0)-(ww-1,hh-1),rgb(0,0,0),b
                    w.win(w.count-1).x=xx
                    w.win(w.count-1).y=yy
                    w.win(w.count-1).w=ww
                    w.win(w.count-1).h=hh
                    w.win(w.count-1).title=title
                    w.win(w.count-1).titlebar=tbar
                    w.wins(w.count-1)=w.count-1
                    if tbar then
                              drawTitleBar w,w.count-1
                              drawClsWindow w,w.count-1
                              line w.win(w.count-1).images,(0,TitleBarSize)-(ww-1,hh-1),rgb(0,0,0),b
                    end if               
                    r=w.count-1
          end if               
          return r               
end function
               
               
#include "vbcompat.bi"
Dim a As Double, b As Double
dim win as wwin
dim x as integer
dim y as integer
dim i as integer
dim w as integer
dim h as integer
dim ii as integer
dim y12 as integer
dim b12 as integer
dim x12 as integer
dim y11 as integer
dim i12 as integer
dim w12 as integer
dim h12 as integer
               
dim y1 as integer
dim b1 as integer
               
dim cc as clock
dim bb as integer
dim x1 as integer
w=640               
h=480               
               
               
'' Create a graphics screen.
ScreenRes w, h, 16
               
dim s as string
s = "im love marina"
'Set the window title
WindowTitle s
               
               
win.count=0
w12=w               
h12=h               
               
i=creatWindows(win,0,0,w,h,rgb(255,255,255),s,false)
               
for y12= 0 to h12 step 8
          line win.win(i).images,(0,y12)-(w12,y12),rgb(0,0,255)
next y12               
for x12= 0 to w12 step 8
          line win.win(i).images,(x12,0)-(x12,h12),rgb(0,0,255)
next x12               
               
for y12= 0 to h step 8
          Draw String win.win(i).images,(y12, y12), s,rgb(0,0,255)
next y12               
               
               
i=creatWindows(win,20,20,160,80,rgb(255,255,255),"month",true)
i=creatWindows(win,40,40,160,80,rgb(255,255,255),"day",true)
i=creatWindows(win,60,60,160,80,rgb(255,255,255),"year",true)
i=creatWindows(win,80,80,160,80,rgb(255,255,255),"hour",true)
i=creatWindows(win,100,100,160,80,rgb(255,255,255),"minuts",true)
i=creatWindows(win,120,120,160,80,rgb(255,255,255),"seconds",true)
i=creatWindows(win,140,140,160,200,rgb(255,255,255),"clock",true)
               
cc.x=5               
cc.y=TitleBarSize+5
cc.r=75               
               
do               
          for ii=1 to win.count-1
                    drawClsWindow win,ii
          next ii               
                         
                         
                         
          a = Now               
          cc.h=Hour(a)
          cc.m=minute(a)
          cc.s=second(a)
                         
          drawclock cc,win.win(7).images
                         
          Draw String win.win(1).images,(4,TitleBarSize +8 ),str$(month(a)),rgb(0,0,255)
          Draw String win.win(2).images,(4,TitleBarSize +8 ),str$(day(a)),rgb(0,0,255)
          Draw String win.win(3).images,(4,TitleBarSize +8 ),str$(year(a)),rgb(0,0,255)
                         
          Draw String win.win(4).images,(4,TitleBarSize +8 ),str$(Hour(a)),rgb(0,0,255)
          Draw String win.win(5).images,(4,TitleBarSize +8 ),str$(minute(a)),rgb(0,0,255)
          Draw String win.win(6).images,(4,TitleBarSize +8 ),str$(second(a)),rgb(0,0,255)
                         
                         
          drawWindows win
                         
          sleep 1               
          GetMouse(x1,y1,,b1)
          if b1<> 0 then
                    b1=clickons (win,x1,y1)
                    if b1<> -1 then
                              moveToFront(win,b1)
                    end if               
          end if                 
loop until inkey$<>""
               
               
               
               
               
               
closeG win
               
               
cls               



Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC - 6 hours


Who is online

Users browsing this forum: No registered users and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group