API

Zde je souhrn několika API funkcí, jsou rozdělena do osmi kategorií:

Systém info, Text, Mouse, Soubory, Grafika, INI soubory, Disky, Zvuk

Systém

ReleaseDC

Funkce ReleaseDC vrací zpět zdroje obsazené při užívání GETDC pro získání kontextu zařízení. Tento krok by měl být udělán po okončení získávání kontextů zařízení ve vašem programu. Pokud nastane chyba funkce vrátí 0 jinak vrátí ne~nula. Pro názornost je uveden příklad.

Deklarace :

Form

Desktoph = GetDesktopWindow 0 x = GetDC ( Desktoph )
ret = RelaseDC(Desktoph , x)
Module

Declare Function ReleaseDC Lib "user32.dll" (ByVal hWnd As Long, ByVal hdc As Long) As Long

GetTempPath

Funkce GetTempPath vraci standartní odkládací adresář Windows kds jsou uloženy dočasné soubory při instalaci programů. Obvykle to bude \ TEMP podadresář windows, a!e není to podmínkou. Pokud nastane chyba funkce vrátí 0 jinak vrací String cesty o definované délce.

Deklarace :

Form

Dim tempdir As String * 255
x = GetTempPath (255,tempdir)
Debug.Print "Odkládací adresář je "; Left( tempdir, x )
Module

Declare Function GetTempPath Lib "kernel32.dll" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal IpBuffer As String) As Long

GetParent

Funkce GetParent vrací handle rodičovského objektu jemuž definovaný objekt náleži. Snáze to pochopíte napříkladu. Pokud nastane chyba funkce vrátí 0 jinak vrací Handle rodičovského objektu.
Deklarace :

Form

Formulář Form 1 obsahuje tlačítko Commandl

Debug.Print GetParent (Commad1.hwnd)
Debug.Print Form1.hwnd

Funkce vrátí Handle formuláře Form1 neboť k němu tlačítko Command 1 náleži.

Module

Declare Function GetParent Lib "user32.dll" (ByVal hwnd As Long) As Long

SetParent

Funkce SetParent nastavuje handle nového rodičovského objektu Tzn. "dětský" objekt a jeho vlastnosti vztahujici se k jeho původnímu rodičovskému objektu budou přesunety do nového rodičovského objektu, Snáze to pochopíte na příkladu. Pokud nastane chyba funkce vrátí 0 jinak vrací Handle původního rodičovského objektu.

Deklarace :

Form

Formulář Form 1 obsahuje tlačítko Command 1 Formulář Form2 neobsahuje žádny objekt

oldhwnd = SetParent ( Command1.hwnd, Form2.hwnd )
Debug.Print Form1.hwnd; oldhwnd
Funkce přesune tlačítko Command1 z Form1 do Form2

Module

Declare Function SetParent Lib "user32.dll" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

GETDESKTOPWINDOW

Funkce GETDESKTOPWINDOW vrátí handle (HWND) monitoru bez ukazatele. Teoreticky lze rovněž použit přímo funkci GETDC , to však nemohu doporučit { může to vést k nepředvidatelným výsledkům ). Pokud nastane chyba fiinkce vrátí 0 , jinak vrátí hodnotu Handle.

Deklarace :

Form

Desktoph = GetDesktopWindow ()

Module

Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long,ByVal y As Long, ByVal crColor As Long) As Long

GetDC

Funkce GETDC vrátí kontext zařízení okna nebo objektu, dané jejím Handle. Tato funkce má stejný účinek jako použití VB objekt .HDC . Jestliže se pokusíte- zadat kontext zařízení jenž není zařízeni nastane chyba potom funkce vrací 0. Na příkladu se spojením obou funkcí dostaneme na kloub ploše monitoru.

Deklarace:

Form

Desktoph = GetDesktopWindow ()
x = GetDC ( Desktoph )

Module

Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Pozn1.
Po ukončeni požiti funkcí je dobré uvolnit zdroje viz. ReleaseDC
Pozn2.
S připojením funkce StretchBIt můžeme snadno sejmout plochu monitoru jako to dělá PnntScreen.

GetWindowRect

Funkce GetWindowRect vrací velikost a pozici okna. Tato informace je převedena do proměnné převzaté jako LPRECT. Jestliže okno je mimo viditelnou část obrazovky, budou se hodnoty odrážet tak že (například vlevo objektu bude zápor). Pokud nastane chyba funkce vrátí 0 jinak vrací ne-nula.

Deklarace :

Form

Dim r As RECT
x = GetWindowRect ( Form1.hWndd, r )
Debug.Print "Width = " r.Right - r.Left Debug.Print "Height = " rBottom - r.Top

Module

Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long

Text

CharLower
Funkce CharLower převede všechna písmena v řetězci na malá.

Deklarace:

Převod "Hello, World!" na malá písmena

Debug Print CharLower ( "Hello, World!" )

Vrácená hodnota je "hello, world!"

Declare Function CharLower Lib "user32.dll" Alias "CharLowerA" (ByVal lpsz As String) As String

CharUpper

Funkce CharLower převede všechna písmena v řetězci na velká.

Deklarace:

Převod "Hello, World!" na velká písmena

Debug.Print CharUpper ("Hello, World!" )

Vrácená hodnota je "HELLO, WORLD!"

Declare Function CharUpper Lib "user32.dll" Alias "CharUpperA" (ByVal !psz As String) As String

GetWindowLong and SetWindowLong

Funkce GetWindowLong čte a funkce SetWindowLong vrací stisknutou klávesu pouze u aktivního objektu. Pro lepší pochopení činností obou funkcí je uveden příklad pro filtrování kláves
Místo konstanty ES_NUMBER můžete použit např.
ES_UPPERCASE = &H8& ' pouze velká písmena
ES_LOWERCASE = &H10& ' pouze malá písmena
Deklarace :

Form

Funkce zavolaná s parametrem Flag = True dovolí pouze čísla Funkcezavolaná s parametrem Flag = False dovolí původní nastaveni

Private Sub Textl_Change()

rc = SetNoNumbers(Textl.hWnd, True)
End Sub

Module

Public Function SetNoNumbers(txtSet As TextBox, Flag As Boolean) As Long
Dim curstyle As Long
curstyle = GetWindowLong(txtSet.hWnd, GWLSTYLE)
If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If
SetNoNumbers = SetWindowLong(txtSet.hWnd, GWL_STYLE, curstyle)
txtSet.Refresh
End Function
Priate Const GWL_STYLE = (-16)
Private Const ES_NUMBER = &H2000&
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Mouse

GetCursorPos

Parametr GeíCursorPos načítá aktuální hodnoty pozice cursoru myši. Hodnoty x (vodorovně) a y (svisle) jsou uváděny v pixelech, přičemž "0" je v levém horním rohu obrazovky.
Deklarace:

Form

Dim coord As POINTAPI
x = GetCursorPos(coord)
y = GetCursorPos(coord)
Debug-Print (coord.x), (coord.y)

Module

Type POINTAPI
x As Long
y As Long End Type

Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINTAPI) As Long

SetCursorPos

Parametr SetCursorPos nastavuje pozici cursoru myši. Hodnoty x (vodorovně) a y (svisle) musí být uvedeny v pixelech, přičemž "0" je v levém horním rohu obrazovky. Pokud nastavíte hodnoty mimo rozlišeni obrazovky, kurzor bude přemístěn na okraj obrazovky.

Deklarace:

Form

x = SetCursorPos(100, 200)

Module

Declare Function SetCursorPos Lib "user32.dll" (ByVal x As Long, ByVal y As Long) As Long

ClipCursor

Funkce CHpCursor omezí pohyb ukazatele myši v dané pravoúhlé oblasti obrazovky. Jestliže se uživatel pokusípohybovat mimo tuto oblast nebo nastaví novou pozici funkcí SetCursorPos , bude ukazatel okamžitě vrácený na oblast. POZOR účinek nastavení bude trvat i pokud uživatel program ukončí nebo přeskočí do jiného programu!!! Jediná možnost "uvolnění" ukazatele je "omezit" ho na celou obrazovku (viz. přiklad). Funkce vrátí 0 jestliže nastane chyba.

Deklarace:

Form

Dim r As Rect

Zde je kursor omezen na pohyb v prostoru Form1

x = GetWindowRect(Form1.hwnd, r)
x = ClipCursor(r)

Zde je kursor uvolněn na pohyb v prostoru obrazovky

deskhWnd = GetDesktopWindow()
x = GetWindowRect(deskhWnd, r)
x = ClipCursor(r) Module

Module

Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long End Type
Declare Function ClipCursor Lib "user32.dll" (IpRect As Rect) As Long
Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, IpRect As Rect) As Long

GetCIipCursor

Parametr GetCIipCursor vrací velikost prostoru vymezeného pro pohyb ukazatele myši, omezením při použití ClipCursor. Jestliže není nastaveno žádné zřejmé omezení, funkce potom vrací skutečnou velikost obrazovky. Funkce vrátí 0 jestliže nastane chyba.

Deklarace:

Form

Dim r As RECT x = GetClipCursor(r) Debug.Print r.Left; r.Top ' Debug.Print r.Right; r.Bottom

Module

Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long End Type

Declare Function GetCIipCursor Lib "user32.dll" (lprc As RECT) As Long

ShowCursor

Parametr ShowCursor nastavuje viditelnost cursoru myši. Pokud je hodnota rovna jedné ukazatel je viditelný, pokud je hodnota rovna nule ukazatel je skryt. POZOR ukazatel zůstane skryt i po restartu počítače dokud ho znovu neodkryjete funkcí ShowCursor.

Deklarace:

Form

x = ShowCursor(0)

Module

Declare Function ShowCursor Lib "user32.dll" (ByVal bShow As Long) As Long

Soubory

SetFileAttributes

Funkce SetFileAttributes nastavuje atributy souboru nebo adresáře Pokud nastane chyba vrací 0 jinak vrací Long odpovídající definované konstantě.

Přehled možných konstant:

Public Const F1LE_ATTRIBUTE_ARCHIVE = &H20
Nastaví atribut Archivovat.
Public Const FILE_ATTRIBUTE HIDDEN = &H2
Nastaví atribut Skrytý.
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Nastaví atribut Normální resp. odstani všechny atributy. Nutno použit samostatné.
Public Const FILE_ATTR1BUTE_READONLY = &H1
Nastaví atribut Jen pro čtení.
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Nastaví atribut Systémový.

Příklad:

Form

Nastaví atributy Systémový a Skrytý

x = SetFileAttributes ("C:\data.dat", F1LE_ATTRIBUTE_SYSTEM Or FILEATTR1BUTE HIDDEN)

Module

Public Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal IpFileName As String, ByVal dwFileAttributes As Long) As Long

GetFileAttributes

Funkce GetFileAttributes vrací atributy souboru nebo adresáře. Pokud nastane chyba varci 0 jinak vrací Long odpovídající definované konstantě.

Přehled možných konstant:

Const FILE_ATTRIBUTE_ARCHIVE = &H20
Nastaven atribut Archivovat.
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Soubor je uložen na Komprimovaném disku nebo v adresáři.
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Zadaný řetězec je adresář, nikoli soubor
Const FILE_ATTRIBUTE_HIDDEN = &H2
Nastaven atribut Skrytý.
Const FILE_ATTRIBUTE_NORMAL = &H80
Nejsou nastaveny žádné atributy.
Const FILE_ATTRIBUTE_READONLY = &H1
Nastaven atribut Jen pro čteni.
Const FILE_ATTRIBUTE_SYSTEM = &H4
Nastaven atribut Systémový.

Příklad:

Form

attribs = GetFileAttributes("C:\temp") ' ("C:\temp\data.dat")
If fattribs And FILE ATTRIBUTE READONLY) <> 0 Then Debug.Print "Jen pro čteni"
If (attribs And FILE_ATTRIBUTE_H1DDEN) <> 0 Then Debug Print "Skrytý"
If (attribs And F1LE_ATTRIBUTE_DIRECTORY) <> 0 Then Debug.Print "Adresář"

Module

Public Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal IpFileName As String) As Long

DeleteFile

Funkce DeleteFile odstraní existující soubor na disku. Funkce nepoužívá koš ani potvrzovací dialog, tzn. soubor odstraní nenávratně. Pokud nastane chyba funkce vrací 0 , jinak vrací 1.

Deklarace

Form

x = DeleteFile ( "C:\Dummy\deIfile.txt" )

Module

Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

CreateDirectory

Funkce CreateDirectory vytvoří nový adresář na disku. Je také potřeba nastavit atributy adresáře(to Windows NT dělají automaticky, ale Windows 95 ue). Pokud nastane chyba funkce vrací 0 , jinak vrací 1.

Deklarace:

Form

Dim secattr As SECURITY ATTRIBUTES secattr.lpSecurityDescriptor = 0
secattr.bInheritHandle = True secattr.nLength = Len(secattr) x = CreateDirectory("C:\Dummy\NewDir", secattr)

Module

Type SECURITY_ATTRIBUTES nLength As Long
Velikost struktury
IpSecurityDescriptor As Long
Identifikační deskriptor. Default je 0 (normal)
bInheritHandle As Boolean
Určuje zda nový adresář smi zdédit Handle od nových procesů nebo programů.
End Type

Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA"(ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

RemoveDirectory

Funkce RemoveDirectory odstraní prázdný adresář na disku. Pokud adresář obsahuje jiné adresáře nebo soubory nastane chyba. Pokud nastane chyba funkce vrací 0 , jinak vraci 1.

Deklarace:

Form

x = RemoveDirectory ( "C:\Dummy\NewDir" )

Module

Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long

Grafika

Rectangle

Funkce Rectangle vytvoří obdelník na definovaných souřadnicích vztahujících se k zadanému objektu(HDC)Barva obdeiniku bude převzata z nastaveni ForeColor objektu ke kterému náleží, pokud není nastavenapřímo.

Hodnoty jsou zadány v pořadí:
1. Objekt k němuž se vztahují souřadnice obdelníku
2. Souřadnice opěrného bodu X1
3. Souřadnice opěrného bodu Y1
4. Souřadnice opěrného bodu X2
5 Souřadnice opěrného bodu Y2
Deklarace:

Form

Form1 ForeColor = RGB{255, 0, 0) ' cervená x = Rectangle(Forml hdc, 25, 25, 100, 50)

Module

Declare Function Rectangle Lib "gdi32" Alias "Rectangle"(ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

RoundRect

Funkce RoundRect je obdoba funkce Rectangle s možnosti definice rádiusů rohů obdelníku.Barva obdelníku bude převzata z nastaveni ForeColor objektu ke kterému náleží, pokud není nastavena přímo.

Hodnoty jsou zadány v pořadí:
1. Objekt k němuž se vztahují souřadnice obdelníku
2. Souřadnice opěrného bodu X1
3. Souřadnice opěrného bodu Yl
4. Souřadnice opěrného bodu X2
5. Souřadnice opěrného bodu Y2
6. Šířka rádiusu rohu X3
7. Výška rádiusu rohu Y3

Deklarace:

Form

Forml.ForeColor = RGB(255, 0, 0) ' červená
x = RoundRect (FormLhdc, 25, 25, 100, 150, 10, 5)

Module

Declare Function RoundRect Lib "gdi32" Alias "RoundRect"(ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

BitBlt

Funkce BitBlt rychle přesouvá pravoúhlou oblast pixelů z jedné oblasti do druhé. Např. z formuláře do jiného formuláře nebo rámečku apod. Tato funkce je skutečně velmi rychlá.

hDestDC handle kontextu zařízení - jinak řečeno kam kopírovat
X levý horní roh cílové oblasti
Y pravý horní roh cílové oblasti
nWidtb šířka zdrojové a cílové oblasti
nHeight výška zdrojové a cílové oblasti
hSrcDC handle kontextu zařízení - odkud kopírovat data
sSrc levý horní roh zdrojové oblasti
ySrc pravý' horní roh zdrojové oblasti
dwRop parametr, jak vykreslovat obrázek
Konstanty parametru dwRop Const

BLACKNESS = &H42
Vyplní cílovou oblast barvou s indexem 0 've fyzické paletě (default Čená)
DSTINVERT = &H550009
Invertuje cílovou oblastí
MERGECOPY = &HC000CA
Spojí barvu určené palety se zdrojem pomocí AND
MERGEPAINT = &HBB0226
Spojí inverzní zdroj s cílem pomocí operátoru OR NOTSRCCOPY = &H330008 kopíruje inverzní zdrojovou oblast
NOTSRCERASE = &H1100A6
Zkombinuje barvu zdroje a cíle použitím 'operátoru OR a výsledek invertuje
PATCOPY = &HF00021
Kopíruje určenou paletu do cílové bitmapy
PATINVERT = &H5A0049
Kombinuje určenou paletu a cíl pomocí operátoru XOR
PATPAINT = &HFB0A09
Kombinuje určenou paletu se zdrojem pomoci OR a výsledek kombinuje s cílovou oblastí
SRCAND = &H8800C6
Kombinuje zdroj a cíl pomoci AND
SRCCOPY = &HCC0020
Zkopíruje zdrojovou oblast do cílové
SRCERASE = &H440328
Kombinuje inverzní barvu cíle s barvou zdroje pomocí AND
SRCINVERT = &H660046
Kombinuje zdrojovu a cílovou barvu pomocí XOR
SRCPAINT = &HEE0086
Kombinuje barvu zdroje a cílu pomocí OR
WHITENESS = &HFF0062
Vyplní cílovou oblast barvou s indexem 1 've fyzické paletě (default bílá)

Deklarace:

Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long,ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

STRETCHBLT

Funkce STRETCHBLT rychle přesouvá pravoúhlou oblast pixelů z jedné oblasti do druhé. Na rozdíl od BitBlt tato funkce také dovoluje měnit velikost originálu a dimenze obrazu. Navíc použiti metody "kopie", můžete určit jiné cesty kopírování obraz s DWROP parametrem. Bod který určíte v cíli bude honi-levý roh pro vloženi. Pokud nastane chyba funkce vrátí 0 jinak vrací ne nula.

HDESTDC
Handle kontextu zařízení -jinak řečeno kam kopírovat.
X
Souřadnice bodu X cílové oblasti.
Y
Souřadnice bodu V cílové oblasti.
NWIDTH
Šířka obrazu v cílové oblasti.
NHE1GHT
Výška obrazu v cílové oblasti.
XSRC
Souřadnice X horního-levého rohu zdroje.
YSRC
Souřadnice Y horního -levého rohu zdroje.
NSRCW1DTH
Šířka obrazu zdroje.
NSRCHEIGHT
Výška obrazu zdroje.
DWROP

Parametr jak vykreslit obrázek

Konstanty parametru DWROP Const
SRCAND = &H8800C6
Kombinuje zdroj a cil pomocí AND.
SRCCOPY = &HCC0020
Zkopíruje zdrojovou oblast do cílové.
SRCERASE = &H440328
Kombinuje inverzní barvu cíle s barvou zdroje pomoci AND.
SRCINVERT = &H660046
Kombinuje zdrojovou a cílovou barvu pomocí XOR
SRCPAINT = &HEE0086
Kombinuje určenou paletu se zdrojem pomocí OR a výsledek kombinuje s cílovou oblastí.

Příklad:

Zkopíruje oblast z Picturel do Picture2 se změnou velikosti

x = StretchBlt(Picturel, hDC, 0, 0, 32, 32, Picture2.hDC, 0, 0, 16, 32, SRCCOPY)
Picturel .Refresh

Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

DrawFocusRect

Funkce DrawFocusRect umožňuje vybrat pravoúhlou oblast tahem myši. Jak to vypadá, si můžete vyzkoušet sami, když kliknete třeba na plochu Windows a táhnete myší. Použijete-li tuto funkci poprvé, vykreslí se obdélník, podruhé se stejnými souřadnicemi se obdélník překreslí barvou pozadí, tj. vymaže se. Pro názornost je uveden příklad. Použití může vypadat třeba takto: (picturel musí mít ScaíeMode nastaveno na Pixel)

Deklarace:

Pnvate x1 As Long Private x2 As Long Private y1 As Long Private y2 As Long

Sub Picturel_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
xl = X
yl = Y
End If
End Sub

Sub Picturel_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim obdélník As RECT

If Button = vbLeftButton Then 'Smazáni starého obdélníku
If (Y2 <> 0 Or X2 <> 0) Then
DrawFocusRect Picturel.hdc, obdeinik
X2 = X: Y2 = Y
With obdeinik
.Left = xl
.Right = X2
.Top = yl
.Bottom = Y2
End With
DrawFocusRect Picturel.hdc, obdelnik
End If
End Sub

Module

Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Public Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, ipRect As RECT) As Long

SetPixel

Funkce SetPixel umožňuje nastavit barvu pro jednotlivý pixel na souřadnicích vztahujících se k zadanému objektu (HDC).

Deklarace:

Form

r = SetPixel ( Form1.hdc, 30, 50, &HFF00FF )

Module

Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Loog, ByVal V As Long, ByVal crColor As Long) As Long

Polygon

Funkce Poligon vytvoří mnohoůhelník na definovaných souřadnicích vztahujících se k zadanému objektu (HDC). Zde je nutno definovat proměnou typu pole s pevno délkou. Barva obdelníku bude převzata z nastaveni ForeCoior objektu ke kterému náleží, pokud není nastavena přímo.

Deklarace:

Form

Dim vrchol (1 To 3) As POINTAPI
vrchol(l).x=10
vrchol(l).y=10 vrchol(2).x = 500 vrchol(2).y=100 vrchol(3).x = 200 vrchol(3).y = 200
Form1.ForeColor = RGB(255, 0, 0) ' Červená x = Polygon (Form1.hdc, vrchol (1), 3)

Module

Public Type POINTAPI
x As Long
y As Long End Type

Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As PO1NTAPI, ByVal nCount As Long) As Long

Polyline

Funkce Polyline vytvoří řetězec na sebe navazujících čar na definovaných souřadnicích vztahujících se k zadanému objektu (HDC). Zde je nutno definovat proměnou typu pole s pevno délkou, přičemž první hodnoty X Y nastavují výchozí (startovací) pozici pro následné vykresleni grafiky. Barva obdelníku bude převzata z nastaveni ForeColor objektu ke kterému náleží, pokud není nastavena přímo.

Deklarace:

Form

Dim vrchol (1 To 4) As POINTAPI
vrchhol(l).x = 10
vrchol(l).y= 10
vrchol(2).x = 500
vrchol(2).y= 100
vrcho1{3).x = 200
vrchol(3).y = 200
vrchol(4).x = 300
vrchol(4).y = 400
Form1.ForeColor = RGB (255, 0, 0) 'červená x = Polyline (Form1.hdc, vrchol (1), 4)

Module

Public Type POINTAPI
x As Long
y As Long End Type

Public Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, BylVal nCount As Long) As Long

PolylineTo

Funkce PolylineTo je obdoba funkce Polyline s tím rozdílem, že již prvni hodnoty X Y obsahují koncové body čary neboť pozice startu čáry se vztahuje k nastavení MoveToEx. Barva čáry bude převzata z nastaveni ForeColor objektu ke kterému náleží, pokud není nastavena přímo Deklarace Form je totožná s funkcí Polyline.

Module

Public Type POINTAPI
x As Long
y As Long End Type

Public Declare Function PolylineTo Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long

InvertRect

Funkce InvertRecl používá logickou operaci NOT pro každý pixel vybrané oblasti.Na černobílém monitoru změní černou barvu na bílou a naopak. Resp. vytvoří negativ v definované oblasti. Použit lze rovněř na obrázky.Nutno definovat pravoůhlou oblast na které se změna provede a objekt ke kterému se oblast vztahuje {HDC).

Deklarace:

Form

Dim rc As RECT

rc.Top = 50
rc.Left = 50
rc.Bottom= 100
rc.Right = 200
x = InvertRect(Forml.hdc, re)
Module

Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long End Type

Declare Function InvertRect Lib "user32" (ByVal hdc As Long, IpRect As RECT) As Long

MoveToEx and LineTo

Funkce MoveToEx nastavuje výchozí bod zvoleného objektu (HDC) pro výstup všech gafíckých API metod. Tzn. Mění standartně nastavený levý horní roh na nové souřadnice. Funkce LineTo vytvoří čáru na definovaných souřadnicích vztahujících se k zadanému objektu. Pozice startu čary se vztahuje k nastavení MoveToEx. Barva čáry bude převzata z nastaveni ForeColor objektu ke kterému náleží, pokud není nastavena přímo.
Deklarace:

Form

Dim old As POINTAPI
Form1.ForeColor = RGB(255, 0, 0) ' červená
x = MoveToEx (Form1.hdc, 0, 40, old) ' nastavení bodu startu čáry
x = LineTo (Forml.hdc, 100, 50) ' nastavení konce čáry

Module

Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
Type POINTAPI
x As Long
y As Long
End Type

Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Ellipse

Funkce Ellipse vytvoří elipsu na definovaných souřadnicích vztahujících se k zadanému objektu (HDC). Barva elipsy bude převzata z nastaveni ForeColor objektu ke kterému náleží, pokud není nastavena přímo.

Hodnoty jsou zadány v pořadí:
1. Objekt k němuž se vztahuji souřadnice elipsy
2. Souřadnice opěrného bodu X1
3. Souřadnice opěrného bodu Y1
4. Souřadnice opěrného bodu X2
5. Souřadnice opěrného bodu Y2

Deklarace:

Form

Form1.ForeColor = RGB(255, 0, 0) ' červená x = EIIipse(Forml.hdc, 25, 25, 100, 75)

Module

Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Yl As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

INI soubory

GetPrivateProfileString

Funce GetPrivateProfileString vrací String hledaného klíče ve zvoleném INI souboru. Pokud záznam není nalezen vrací nastavenou Default hodnotu (v našem přikladu "(error)" ). Předem je nutno definovat délku vráceného záznamu.

Deklarace:

Form

Dim Data as String * 255
rc = GetPrivateProfileString("Desktop", "Wallpaper", "(error)" ,Data ,Len(Data), "c:\sys.ini") If rc = "(error)" Then
Debug.Print "Záznam nenalezen." Else
Debug.Pnnt rc End If

Module

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA"(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

GetProfileString

Totožná fiinkce s funkcí GetPrivateProfileString s tím rozdílem čte pouze ze souboru WIN.INI

Deklarace:

Form

Dim Data as String * 255
rc = GetPrivateProfileStnng ("Desktop", "Wallpaper", "(error)" ,Data ,Len(Data)) If rc = "(error)" Then
Debug.Print "Záznam nenalezen." Else
Debug.Print rc End If

Module

Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String,ByVal lpReturnedString As String, ByVal nSize As Long) As Long

GetPrivateProfileInt

Funce GetPrivateProfileInt vrací Integer hledaného klíče ve zvoleném INI souboru.Pokud záznam není nalezen vrací nastavenou Default hodnotu (v našem přikladu -1), pokud záznam je nalezen, aleje typu Variant funkce vrací Integer dokud nenarazí na String.V případě že záznam neobsahuje Integer na první pozici vrací 0.

Př: Nebo:

Záznam = 1234ABCD5678 Záznam = ABCD
Vrací = 1234 Vraci = 0
Deklarace:

Form

ret= GetPrivateProfilelnt ("keyboard", "type", -1, "c:\sys.ini")
If ret =-1 Then
Debug.Print "Záznam nenalezen"
Else
Debug.Print ret End If

Module

Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA"(ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long,ByVal lpFileName As String) As Long

GetProfileInt

Totožná funkce s funkcí GetPrivateProfilelnt s tim rozdílem rte pouze ze souboru WIN.INI .

Deklarace:

Form

ret = GetProfilelnt ("Desktop", "WallpaperStyle", -1) If ret = -1 Then
Debug.Print" Záznam nenalezen."
Else
Debug.Print ret
End If

Module

Declare Function GetProfileInt Lib "kernel32" Alias "GetProfileIntA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal nDefault As Long) As Long

WritePrivateProfileString

Funce WritePrivateProfíleString zapisuje/přepisuje String zadaného klíče ve zvoleném INI souboru.Pokud záznam nebo soubor nexistuje bude automaticky vytvořen. Pokud nastane chyba funkce vrací 0.

Deklarace:

Form

rc = WritePrivateProfileString ("Options", "StatusBar", "I", "c:\sys.ini")

Module

Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

WriteProfileString

Totožná funkce s funkcí WritePrivateProfileString s tím rozdílem zapisuje pouze do souboai W1N.INI Pokud nastane chyba funkce vrací 0.

Deklarace:

Form

rc = WriteProfileString ("Desktop", "Wallpaper", "C:\Windows\CIouds.bmp")
Module

Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA"(ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long

Disky

GetDriveType

Funkce GetDriveType varcí informaci o typu sledovaného disku (CD-ROM, harddisk, atd.) . Pokud nastane chyba funkce vrací 0 , jinak vrací číslo konstanty.

DRIVE REMOVABLE
Floppy mechanika. DRIVE_FIXED
Hard disk. DRIVE_REMOTE
Server.
DRIVE_CDROM CD-ROM mechanika. DRIVE_RAMDISK
Virtuální disk.
nDrive
kořenový adresář disku, jako "c:\" nebo "a:\"
Deklarace :

Form

x = GetDriveType ( "c:\" )
Select Case x
Case 3
Debug.Print "Jednotka ""C"" je hard disk"
Case atd

Module

Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

GetDiskFreeSpace
Funkce GetDiskFreeSpace vraci informace o prostoru na disku. Pokud nastane chyba funkce vrací 0 . jinak vrací 1.

lpRootPathName
Označení disku jenž chcete sledovat. "c:\"nebo"a:\" atd.. lpSectorsPerCluster
Počet sektorů v clusteru. lpBytesPerSector
Počet bajtů v sektoru. lpNumberOfFreeCIusters
Počet prázdných clusterů. lpTotalNumberOfClusters
Celkový počet clusterů (prázdných i obsazených).
Deklarace :

Form

x = GetDiskFreeSpace ( "c:\", SecPerClus, BytePerSec, FreeClus, TotalClus )
Debug.Print "Free space:"; SecPerClus * BytePerSec * FreeClus; "bytes"

Module

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long,lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long

Zvuk

waveOutGetNumDevs

Funkce waveOutGetNumDevs ověří existenci zvukové karty. Pokud karta není přítomna vrací 0, v opačném případě 1.

Deklarace:

Form

Dim i As Integer
i = waveOutGetNumDevsO
If i > 0 Then
Debug.Print "V počítači je zvuková karta."
Else
Debug.Print "V počítači není zvuková karta."
End If

Module

Declare Function waveOutGetNumDevs Lib "winmm.dll" Alias "waveOutGetNumDevs" () As Long

sndPlaySound

Funkce sndPlaySound umožní přehráváni menších zvukových souborů formátu WAV. Konstanty lze samozřejmě kombinovat.

Konstanty parametru uFlags

SND_ALIAS = &H10000
Přehraje systémový zvuk (SystemStart, Asterisk atd.)
SND_SYNC = &H0
Program bude pokračovat až po přehrátí zvuku
SND_ASYNC = &H1
Program pokračuje nezávisle na přehrávání zvuku
SND_FILENAME = &H20000
Přehraje definovaný soubor WAV
SND_LOOP = &H8
Zvuk bude přehráván ve smyčce, tj. pořád dokola.
SND_NODEFAULT = &H2
V případě, že soubor nebude nalezen, přehraje se standardní (default) systémový zvuk (to platí jak pro SNDSYNC, tak i pro SNDASYNC). Jestli není žádný definován, funkce skonči chybou. Nechcete-li v případě nenalezení souboru přehrávat default zvuk, přidejte ještě konstantu SND_NODEFAULT.
SND_NOOSTOP = &H10
Zakáže zastavení nebo pozastavení přehrávaného zvuku.
SND_NOWAIT = &H2000
Nečeká pokud je řadič zvuku zaneprázdněn.
Příklad :

Form

x = sndPlaySound ("media.wav", SND_LOOP + SND_ASYNC)

nebo :

x = sndPlaySound ("EmptyRecycleBin", SND_ALIAS Or SND_SYNC)

Module

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Const SND_ALIAS = &H10000 Const SND_SYNC = &H0 Const SND_LOOP = &H8 Const SND_ASYNC = &H1

© 2005 Jindřich Mach & Jan Ticháček