aUCBLogo Demos and Tests / dltest


to dltest
;   testINIDll
   
::user32=DynamicLibrary "user32
   
::kernel32=DynamicLibrary "kernel32
   
hWnd=FindWindowA [aUCBLogo-4.7]
   
show hWnd
   
myWindow=CreateWindow "Hallo [Button0 0 300 200 200 100 hWnd 0
   
ignore ShowWindow :myWindow
   
moveDemo :myWindow
   
ignore readChar
   
show DestroyWindow :myWindow
   
(show "GetCurrentDirectory "; GetCurrentDirectory)
end

to moveDemo :hWnd
   
maxx=GetScreenMaxX
   
maxy=GetScreenMaxY
   
y=0
   
dy=0
   
ddy=1
   
x=(GetWindowRect hWnd).1
   
dx=1
   
while [not key?]
   
[   y=y+dy
      
if or maxy y [y=y-dy dy=-dy]
      
dy=dy+ddy
      
x=x+dx
      
if or maxx x [x=x-dx dx=-dx]
      
MoveWindow hWnd x y
      
dispatchMessages
   
]
   
MoveWindow hWnd 0 0
end

to testINIDll
   
INIDll=DynamicLibrary "inidll
   
show INI_SetPfad [test.ini]
   
show INI_SetWert [TestSection1][TestName11234
   
show INI_SetWert [TestSection2][TestName2] [Hallo]
   
pr INI_GetWert [TestSection2][TestName2]
   
throw "stop
end

to INI_SetPfad filename
   
output DLCall INIDll [SetPfad] (list "Bool
      "Pfad "Word 
filename
      
"Anlage "Bool true)
end

to INI_SetWert section valname value
   
output DLCall INIDll [SetWert] (list "Bool
      "Abschnitt "Word 
section
      
"ItemName "Word valname
      
"ItemWert "Word value
      
"Anlage "Bool true)
end

to INI_GetWert section valname
   
value=StringBuffer 256
   
result=DLCall INIDll [GetWert] (List "Bool
      "Abschnitt "Word 
section
      
"ItemName "Word valname
      
"ItemWert "Word value)
   
if not result [throw "Error]
   
output StringBufferToWord value
end

to SetFocus hWnd
   
ignore DLCall user32 [SetFocus] (list "Int
      "hWnd "Int 
hWnd)
end

to ShowWindow hWnd
   
output DLCall user32 [ShowWindow] (list "Int
      "hWnd "Int 
hWnd
      
"nCmdShow "Int 1)
end

to CreateWindow _name classname exstyle style x y width height parent menu
   
output DLCall user32 [CreateWindowExA] (list "Int
      "dwExStyle "Int 
exstyle
      
"lpClassName "word classname   ;pointer to registered class name 
      
"lpWindowName "word _name   ;pointer to window name 
      
"dwStyle "Int style      ;window style 
      
"x "Int x   ;horizontal position of window 
      
"y "Int y   ;vertical position of window 
      
"nWidth "Int width      ;window width 
      
"nHeight "Int height   ;window height 
      
"hWndParent "Int parent   ;handle to parent or owner window 
      
"hMenu "Int menu   ;handle to menu or child-window identifier 
      
"hInstance "Int LogoInstance   ;handle to application instance 
      
"lpParam "Int 0      ;pointer to window-creation data 
   
)
end 

to DestroyWindow hWnd
   
output DLCall user32 [DestroyWindow] (List "Int
      "hWnd "Int 
hWnd)
end

to FindWindowA title
   
output DLCall user32 [FindWindowA] (list "Int 
      
"Class "Int 0
      
"Title "Word title)
end

to GetParent hWnd
   
output DLCall user32 [GetParent] (list "Int 
      
"hWnd "Int hWnd)
end

to GetSystemMetrics index
   
output DLCall user32 [GetSystemMetrics] (list "Int
      "index "Int 
index)
end

to GetScreenMaxX
   
output GetSystemMetrics 0
end

to GetScreenMaxY
   
output GetSystemMetrics 1
end

to GetWindowRect hWnd
   
local [status iarr]
   
iarr=IntArray 4
   
status=DLCall user32 [GetWindowRect] (list "Int
      "hWnd "Int 
hWnd
      
"rect "IntArray iarr)
   
output iarr
end

to MoveWindow hWnd x y
   
local [xy status]
   
rect=GetWindowRect hWnd
   
status=DLCall user32 [MoveWindow] (list "Int
      "hWnd "Int 
hWnd
      
"X "Int x 
      
"Y "Int y
      
"nWidth "Int rect.3-rect.1
      
"nHeight "Int rect.4-rect.2
      
"bRepaint "Int 1)
end

to GetCurrentDirectory
   
local [buf status w]
   
buf=StringBuffer 256
   
status=DLCall kernel32 [GetCurrentDirectoryA] (list "Int
      "bufferLength "Int 
count buf
      
"buffer "Word buf)
   
output StringBufferToWord buf
end