Tekst informacyjny o polityce Cookies Close   
    
 
         
• Strona główna
• 1. Linki
• 3. Kontakt: e-Mail
 
         
• 1. Baza danych
• 2. Tabele i kwerendy
• 3. Formularze
• 4. Raporty
• 5. Moduły i makra
• 6. Obsługa błędów
 
    

II.   VBA 

    
• 1. Okna Accessa
• 2. Okna Formularzy
• 3.Okna Dialogowe
• 4. Tekst
• 5. Liczby
• 6. Pliki
• 7. Inne
 
    

III.   API 

    
• 1. Ogólnie o API
• 2. Funkcje API
• 3. System
• 4. Praca z oknami
• 5. Okna dialogowe
• 6. API - Inne
 
         
• 1. Bitmapy 24 Bit
• 2. GDI i HDC
• 3. Kody kreskowe
• 4. Formant Image
• 5. FreeImage.dll
 
    

V.   Inne 

    
• 1. Shell i MsDOS
• 2. Kontrolki
• 3. ६ԼҚ ਸ
• 4. Unikod

 
Odwiedzin:

Logo AccessFAQ• III.2. API - Przydatne funkcje API •

2.1 Uniwersalna funkcja - SendMessage (...) - opis niektórych argumentów tej funkcji.
2.2 SetWindowPos (...) - zmiania rozmiaru okna, jego położenia w płaszczyznach XYZ oraz zmiana stylu okna.
2.3 Odczyt aktualnej pozycji jaką ma kursor myszy i wywołanie zdarzeń przycisków myszy.
2.4 GetWindow (...) - uchwyt okna w/m pozycji (Z order).
2.5 ShowWindow (...) - sposoby pokazywania okien.
2.6 GetSystemMetrics (...) - system miar i dane konfiguracyjne systemu miar.
2.7 GetLocaleInfo (...) - ustawienia lokalne (m.in. Panel Sterowania/Ustawienia regionalne) dotyczące liczb, waluty, godziny, daty, kraju, języka itp.
 

2.1 Uniwersalna funkcja - SendMessage (...) - opis niektórych argumentów tej funkcji.

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal Msg As Long, _
wParam As Any, _
lParam As Any) As Long
Zwraca wartości w zależności od użytych argumentów Msg



• Const WM_CLOSE = &H10
Powoduje zamknięcie okna
wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

    lRet = SendMessage(hWind, WM_CLOSE, ByVal 0&, ByVal 0&)


• Const WM_GETTEXTLENGTH = &HE
Zwraca długość tekstu okna (bez znaku końca stringu - vbNullChar)
wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

    lBf = SendMessage(hWind, WM_GETTEXTLENGTH, _
ByVal 0&, ByVal 0&)


• Const WM_GETTEXT = &HD
Zwraca liczbę znaków tekstu okna
wParam - liczba znaków do skopiowania
lParam - wskaźnik do buforu tekstu

    'przygotuj bufor tekstu
    sBfText = String(lBf + 1, vbNullChar)
    lRet = SendMessage(hWind, WM_GETTEXT, _
ByVal lBf, ByVal sBfText)
    sBfText = Left$(sBfText, lRet)


• Const WM_SETTEXT = &HC
Ustawia tekst okna. Przy powodzeniu zwraca TRUE, w przeciwnym wypadku FALSE
wParam = 0 ' nieużywany
lParam - wskaźnik do stringu - tekstu okna.

    lRet = SendMessage(hWind, WM_SETTEXT, _
ByVal 0&, ByVal sTitleWind)


• Const WM_SETREDRAW = &HB
W zależności od parametru fRedraw zezwala, lub nie na przemalowanie obszaru okna.
wParam = fRedraw
lParam = 0 ' nieużywany
fRedraw - wartośc parametru wParam
    True - zezwala na przemalowania okna
    False - nie zezwala na aktualizacje okna

    lRet = SendMessage(hWind, WM_SETREDRAW, _
ByVal False, ByVal 0&)


• Const BM_CLICK = &HF5
Powoduje efekt kliknięcia przycisku
wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

    lRet = SendMessage(hWind, BM_CLICK, _
ByVal 0&, ByVal 0&)


• Const BM_GETCHECK = &HF0
    Dla przycisków typu: BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON, lub BS_3STATE - zwraca stan przycisków.
Dla przycisków innego typu zwraca ZERO

wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

Const BST_UNCHECKED = &H0' nie zaznaczony
Const BST_CHECKED =&H1' zaznaczony
Const BST_INDETERMINATE = &H2' nieokreślony (szary) - dla przycisku trójstanowego
' BS_3STATE lub BS_AUTO3STATE

    lRet = SendMessage(hWind, BM_GETCHECK, _
ByVal 0&, ByVal 0&)


• Const BM_SETCHECK = &HF1
    Dla przycisku typu BS_CHECKBOX lub BS_RADIOBUTTON - ustawia stan przycisku. Zawsze zwraca ZERO
wParam = fCheck
lParam = 0 ' nieużywany
fCheck - wartośc parametru wParam, określa stan wyboru przycisku

Const BST_UNCHECKED = &H0' nie zaznaczony
Const BST_CHECKED =&H1' zaznaczony
Const BST_INDETERMINATE = &H2' nieokreślony (szary) - dla przycisku trójstanowego
' BS_3STATE lub BS_AUTO3STATE

    lRet = SendMessage(hWind, BM_SETCHECK, _
BST_CHECKED, ByVal 0&)


• Const BM_GETSTATE = &HF2
Przyciski wszystkich typów - zwraca kombinację poniższych stałych stanu przycisku
wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

Const BST_UNCHECKED = &0' nie zaznaczony
Const BST_CHECKED =&1' zaznaczony
Const BST_INDETERMINATE = &2' nieokreślony (szary) - dla przycisku trójstanowego
' BS_3STATE lub BS_AUTO3STATE
Const BST_PUSHED = &H4' wciśnięty; If lRet And BST_PUSHED = TRUE
Const BST_FOCUS = &H8' posiada fokus; If lRet And BST_FOCUS = TRUE

    lRet = SendMessage(hWind, BM_GETSTATE, _
ByVal 0&, ByVal 0&)


• Const BM_SETSTATE = &HF4
    Przycisk typu command button - ustawia wygląd przycisku.
Zawsze zwraca ZERO.

wParam = fState
lParam = 0 ' nieużywany
fState - wartośc parametru wParam - stan podświetlenia
    fState = False - przycisk jest w stanie normalnym (nie wciśnięty),
    fState = True - przycisk zostaje wciśnięty. EFEKT TYLKO WIZUALNY

    lRet = SendMessage(hWind, BM_SETSTATE, _
ByVal fState, ByVal 0&)


• Const CB_GETLBTEXTLEN = &H149
    Zwraca długość tekstu pozycji listy (bez znaku końca - vbNullChar).
Przy niepowodzeniu zwraca CB_ERR = (-1)

wParam - indeks pozycji listy
lParam = 0 ' nieużywany

    lLen = SendMessage(hWind, CB_GETLBTEXTLEN, _
ByVal Index, ByVal 0&)


• Const CB_GETLBTEXT = &H148
    Zwraca długość tekstu pozycji listy (bez znaku końca - vbNullChar).
Przy niepowodzeniu zwraca CB_ERR = (-1)

wParam - indeks pozycji listy
lParam - wskaźnik do buforu tekstu

' przygotuj bufor tekstu
sBffText = String(lLen + 1, vbNullChar)
lRet = SendMessage(hWind, CB_GETLBTEXT, _
ByVal Index, ByVal sBffText)
sBffText = Left$(sBffText, lRet)


• Const CB_GETCOUNT = &H146
Zwraca liczbę pozycji w polu listy, przy niepowodzeniu CB_ERR = (-1)
wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

    lRet = SendMessage(hWind, CB_GETCOUNT, _
ByVal 0&, ByVal 0&)


• Const CB_SELECTSTRING = &H14D
Zaznacza pozycję listy - zwraca indeks pozycji, przy niepowodzeniu CB_ERR = (-1)
wParam -
indeks pozycji startowej do przeszukiwania, dla wParam = -1 przeszukiwanie rozpoczyna się od pozycji początkowej,

lParam - wskaźnik do poszukiwanego stringu - tekstu pozycji listy.

    lRet = SendMessage(hWind, CB_SELECTSTRING, _
ByVal -1, ByVal sBfText)


• Const WM_NOTIFY = &H4E
Komunikat powiadamiający okno rodzica o zdarzeniu zachodzącym w kontrolce. Standardowe okna typu Edit, ComboBox, LlistBox, Button, ScrollBars i Static same nie wysyłają tego komunikatu.
wParam = idCtrl -
Identyfikator kontrolki wysyłającej komunikat. Nie określa jednoznacznie kontrolki. Dopiero użycie hwndFrom i (lub) idFrom w strukturze NMHDR przekazane w parametrze lParam identyfikują kontrolkę.

lParam = nmh - adres do struktury NHMDR

Private Type NMHDR
hwndFrom As Long - uchwyt okna kontrolki wysyłającej powiadomienie
idFrom As Long - identyfikator kontrolki wysyłającej powiadomienie
code As Long - kod powiadamiania
End Type

• Const TCN_FIRST As Integer = -550
• Const TCN_SELCHANGE = (TCN_FIRST - 1)
Kod powiadamiający rodzica o dokonanej zmianie w kontrolce
Msg = WM_NOTIFY
wParam = idCtrl - identyfikator kontrolki
lParam = nmh - adres struktury NMHDR

nmh.hwndFrom = hSysTabCtl
nmh.idFrom = GetDlgCtrlID(hSysTabCtl)
nmh.code = TCN_SELCHANGE

lRet = SendMessage(hActiveWnd, WM_NOTIFY, _
GetDlgCtrlID(hSysTabCtl), nmh)


Komunikaty przycisków myszy
• Const WM_LBUTTONDOWN = &H201
• Const WM_LBUTTONUP = &H202
• Const WM_LBUTTONDBLCLK = &H203
• Const WM_MBUTTONDOWN = &H204
• Const WM_MBUTTONUP = &H205
• Const WM_MBUTTONDBLCLK = &H206
• Const WM_RBUTTONDOWN = &H207
• Const WM_RBUTTONUP = &H208
• Const WM_RBUTTONDBLCLK = &H209

    Powyższe komunikaty są wysyłane, kiedy użytkownik wykonuje określoną akcję (naciska, zwalnia lub wykonuje podwójne kliknięcie) jeżeli kursor myszy znajduje się w obszarze okna - klienta.
Jeżeli mysz nie została przechwycona przez inne okno komunikat trafia do okna nad którym znajduje się kursor myszy. W przeciwnym wypadku komunikat jest wysyłany do okna, które przechwyciło mysz.

wParam = fwKeys -określa, jakie klawisze są wciśnięte.

   Parametr ten jest kombinacją poniższych wartosci:
    Const MK_LBUTTON = &H1' wciśnięty lewy przycisk myszy
    Const MK_RBUTTON = &H2' wciśnięty prawy przycisk myszy
    Const MK_SHIFT = &H4' wciśnięty klawisz Shift
    Const MK_CONTROL = &H8' wciśnięty klawisz Ctrl
    Const MK_MBUTTON = &H10' wciśnięty środkowy przycisk myszy
lParam -
współrzędne jakie ma kursor myszy względem okna okna. LoWord zawiera współrzędną X, HiWord współrzędną Y. Paremetr ten przekształcany jest w strukturę POINTS.

Type POINTS
x As Integer
y As Integer
End Type


Komunikaty okna klasy TabControl
• Const TCM_FIRST = &H1300
• Const TCM_GETITEMCOUNT = TCM_FIRST + 4
Zwraca liczbę zakładek , przy niepowodzeniu zwaraca 0
wParam = 0 ' nieużywany
lParam = 0 ' nieużywany

• Const TCM_GETITEM = (TCM_FIRST + 5)
    Zwraca informacje o zakładkach. Przy powodzeniu zwraca TRUE, w przeciwnym wypadku FALSE
wParam = iItem - indeks zakładki
lParam = pItem - adres do struktury TC_ITEMHEADER (lub TC_ITEM)

Private Type TC_ITEMHEADER
mask As Long
res1 As Long - zarezerwoawny
res2 As Long - zarezerwoawny
pszTxt As String - adres buforu na Tekst, zakończonego znakiem vbNullChar
cchTextMax As Long - wielkość buforu na tekst
iImage As Long - indeks obrazka zakładki, lub -1
End Type

mask - określa, która część TC_ITEMHEADER jest zwracana:
TCIF_TEXT = 1 - zwracana jest część pszText
TCIF_IMAGE - zwracana jest część iImage
TCIF_RTLREADING - tekst jest wyświetlany od prawej do lewej

• Const TCM_FIRST = &H1300
• Const TCM_SETCURSEL = (TCM_FIRST + 12)
    Zaznacza określoną zakładkę. Zwraca indeks poprzednio zaznaczonej zakładki, przy niepowodzeniu zwraca -1.
Nie powiadamia rodzica o dokonanej zmianie zakładki.

wParam - indeks zakładki, która ma być zaznaczona
lParam = 0 ' nieużywany

    lRet = SendMessage(hSysTabCtl, TCM_SETCURSEL, CLng(5), 0)

 ΔΔΔ 

 

2.2 SetWindowPos (...) - zmiania rozmiaru okna, jego położenia w płaszczyznach XYZ oraz zmiana stylu okna.

Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long

hWnd - uchwyt okna
hWndInsertAfter -
uchwyt okna które ma być bezpośrednio pod, lub jedna ze stałych HWND_BOTTOM, HWND_NOTOPMOST, HWND_TOP, HWND_TOPMOST
X - współrzędna lewej krawędzi okna
Y - współrzędna Y górnej krawędzi okna
cx - szerokość okna
cy - wysokość okna
wFlags -
określa właściwości okna. Parametr ten jest kombinacją poniższych wartości:

Const HWND_TOP = 0' okno jest ustawiane na górze w Z-Order
Const HWND_BOTTOM = 1' pozycja pod innymi oknami, traci status TOPMOST
Const HWND_TOPMOST = -1' pozycja pod wszystkimu oknami "NON-TOPMOST".
' utrzymuje tą pozycje także po deaktywacji okna
Const HWND_NOTOPMOST = -2' okno jest ustawiane nad wszystkimu oknami
' "NON-TOPMOST", z wyjątkiem okien "TOPMOST"
Const SWP_NOSIZE = &H1' ignorowane są argumenty: cx i cy
Const SWP_NOMOVE = &H2' ignorowane są argumenty: x i y
Const SWP_NOOWNERZORDER = &H200' nie jest zmieniana pozycja Z-Order
Const SWP_FRAMECHANGED = &H20' zostanie wysłany komunikat WM_NCCALCSIZE
' i okno zostanie odświeżone
Const SWP_NOZORDER = &H4' ignorowany jest hWndInsertAfter
Const SWP_SHOWWINDOW = &H40' pokazuje okno
Const SWP_HIDEWINDOW = &H80' ukrywa okno
..................' inne parametry


Const MY_FLAGS As Long = _
SWP_SHOWWINDOW Or _
SWP_FRAMECHANGED Or _
SWP_NOSIZE Or _
SWP_NOOWNERZORDER Or _
SWP_NOZORDER
Dim lRet As Long

' m.in Flaga SWP_NOSIZE - nie pozwala na zmianę rozmiaru formularza pomimo wstawionych wartości argumentów cx, cy
lRet = SetWindowPos(Me.hwnd, 0&, 100&, 100&, _
300&, 300&, MY_FLAGS)

 ΔΔΔ 

 

2.3 Odczyt aktualnej pozycji jaką ma kursor myszy i wywołanie zdarzeń przycisków myszy

Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
    Odczytuje jaka jest aktualna pozycja kursora myszy względem współrzędnych ekranu. Przy błędzie zwraca Zero, przy powodzeniu zwraca wartość <> 0.
lpPoint -
wskaźnik do struktury POINTAPI zawierającej współrzędne ekranowe kursora myszy
Private Type POINTAPI
    X As Long ' współrzędna X punktu
    Y As Long ' współrzędna Y punktu
End Type

Dim papi As POINTAPI

    lRet = GetCursorPos (papi)
    Debug.Print papi.X; papi.Y


Private Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, _
ByVal Y As Long) As Long
    Przesuwa kursor myszy w nowe położenie X;Y w/m współrzędnych ekranowych. Jeżeli nowe współrzędne nie zawierają się w obszarze ekranu system automatycznie dopasowuje skrajne położenia kursora myszy.
Przy błędzie zwraca Zero, przy powodzeniu zwraca wartość <> 0.

X - nowa współrzędna X punktu,
Y - nowa współrzędna Y punktu

    lRet = SetCursorPos(100, 200)


Private Declare Sub mouse_event Lib "user32.dll" _
(ByVal dwFlags As Long, _
ByVal dx As Long, _
ByVal dy As Long, _
ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Symuluje ruch kursora myszy, lub kliknięcie przycisku myszy.
Nie zwraca żadnej wartości.

dwFlags -
kombinacja stałych określa aspekt ruchu lub zdarzenia przycisku myszy MOUSEEVENTF_ABSOLUTE = &H8000 Jeżeli flaga ta nie jest ustawiona, to wartości dx i dy odnoszą się do aktualnej pozycji kursora myszy.
Jeżeli jest ustawiona to wartości dx i dy odnosza się do absolutnej pozycji, gdzie górny-lewy narożnik ma współrzędne (0,0), a dolny-prawy (65535,65535).

Const MOUSEEVENTF_MOVE = &H1' zachodzi ruch myszy
Const MOUSEEVENTF_LEFTDOWN = &H2' lewy przycisk jest wciśnięty
Const MOUSEEVENTF_LEFTUP = &H4' lewy przycisk jest jest zwolniony
Const MOUSEEVENTF_RIGHTDOWN = &H8' prawy przycisk jest wciśnięty
Const MOUSEEVENTF_RIGHTUP = &H10' prawy przycisk jest jest zwolniony
Const MOUSEEVENTF_MIDDLEDOWN = &H20' środkowy przycisk jest wciśnięty
Const MOUSEEVENTF_MIDDLEUP = &H40' środkowy przycisk jest zwolniony
Const MOUSEEVENTF_WHEEL = &H80' Windows NT: Gdy mysz posiada kółko, dane
' o ruchu myszy uzyskać można z dwData
Const WHEEL_DELTA = 120' stała zwracana w dwData, że zostało
' kliknięte kółko myszy

dwData -
jeżeli w dwFlags jest ustawiony MOUSEEVENTF_WHEEL, wtedy dodatnia wartość oznacza, że kółko obracane jest do przodu; ujemne, że kółko obracane jest do tyłu (w stronę do użytkownika). Przy kliknięciu kółkiem zwracana jest wartość WHEEL_DELTA = 120

dwExtraInfo -
dodatkowa 32-bitowa wartość zwracana przez funkcję GetMessageExtraInfo będąca danymi związanymi ze zdarzeniami myszy.



' przykładowe zastosowanie
grupa: pl.comp.bazy-danych.msaccess
wątek: Datasheet wysokość wiersza

 ΔΔΔ 

 

2.4 GetWindow (...) - uchwyt okna w/m pozycji (Z order).

Private Declare Function GetWindow Lib "user32" _
(ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Zwraca uchwyt okna w/g pozycji nakładających się okien (Z order), lub uchwyt właściciela (Ovner), przy niepowodzeniu zwraca Null (Zero)
hWnd - uchwyt okna
uCmd -
zależność pomiędzy oknem hWnd, a oknem którego uchwyt chcemy uzyskać

Const GW_HWNDFIRST = 0' zwraca uchwyt okna takiego samego typu w hierarchii, ale będące na najwyższym poziomie (Z-order),
Const GW_HWNDLAST = 1' zwraca uchwyt okna takiego samego typu w hierarchii, ale będące na najniższym poziomie (Z-order),
Const GW_HWNDNEXT = 2' zwraca uchwyt okna takiego samego typu w hierarchii, ale będące poniżej na poziomie (Z-order),
Const GW_HWNDPREV = 3' zwraca uchwyt okna takiego samego typu w hierarchii, ale będące powyżej na poziomie (Z-order),
Const GW_OWNER = 4' zwraca uchwyt okna będącego właścicielem okna, jeżeli okno takie istnieje,
Const GW_CHILD = 5' zwraca uchwyt dziecka najwyższego poziomu. Jeżeli okno (hwnd) nie jest rodzicem zwraca Null (Zero). Nie są przeszukiwane okna będące następnymi potomkami okna dziecka.



    hWind = GetWindow(Me.hwnd, GW_CHILD)
    hWind = GetWindow(hWind , GW_HWNDNEXT) ' ...itd.

 ΔΔΔ 

 

2.5 ShowWindow (...) - sposoby pokazywania okien.

Private Declare Function ShowWindow Lib "user32" _
(ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
    Pokazuje okno w/g określonego stanu. Jeżeli okno było ukryte zwraca ZERO, jeżeli było widoczne zwraca wartość różną od Zera,
hWnd - uchwyt okna
nCmdShow - sposób pokazania okna

Const SW_HIDE = 0' ukrywa okno i aktywuje następne
Const SW_SHOWNORMAL = 1' aktywuje i wyświetla okno, przywraca rozmiar i położenie dla okien zmaksymalizowanych lub zminimalizowanych
Const SW_SHOWMINIMIZED = 2' aktywuje i wyświetla zminimalizowane okno
Const SW_SHOWMAXIMIZED = 3' aktywuje i wyświetla zmaksymalizowane okno
Const SW_MAXIMIZE = SW_SHOWMAXIMIZED
Const SW_SHOWNOACTIVATE = 4' wyświetla okno w ostatnim położeniu, Okno aktywne jest dalej oknem aktywnym
Const SW_SHOW = 5' aktywuje i wyświetla okno, zachowuje bieżącą wielkość i położenie
Const SW_MINIMIZE = 6' minimalizuje okno i aktywuje następne w/g Z-Order
Const SW_SHOWMINNOACTIVE = 7' wyświetla okno jako zminimalizowane, aktualnie aktywne okno jest dalej oknem aktywnym
Const SW_SHOWNA = 8' wyświetla okno zachowując bieżącą wielkość i położenie, aktywne okno jest dalej oknem aktywnym
Const SW_RESTORE = 9' aktywuje i wyświetla okno. Jeżeli okno jest zminimalizowane lub zmaksymalizowane przywracana jest oryginalna wielkość
Const SW_SHOWDEFAULT = 10' pokazuje okno w oparciu o strukturę STARTUPINFO



    lRet = ShowWindow(Me.hwnd, SW_HIDE)

 ΔΔΔ 

 

2.6 GetSystemMetrics (...) - system miar i dane konfiguracyjne systemu miar.

Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
    Zwraca różne wielkości systemu miar (szerokości i wysokości wyświetlanych elementów okien) oraz inne dane konfiguracyjne systemu miar. Wszystkie wielkości odnoszące się do wielkości obiektów podawane są w pikselach.
nIndex - określa wartość jaka ma zostać zwrócona,

Const SM_CYMINTRACK = 35' Minimalna wysokość ramki okna podczas zmiany rozmiaru poniżej której użytkownik nie może zmniejszyć okna
Const SM_CXDOUBLECLK = 36' Szerokość obszaru w/m pozycji kursora myszy przy pierwszym kliknięciu, aby drugie zostało uznane za podwójne kliknięcie
Const SM_CYDOUBLECLK = 37' Wysokość obszaru w/m pozycji kursora myszy przy pierwszym kliknięciu, aby drugie zostało uznane za podwójne kliknięcie
Const SM_CXICONSPACING = 38' Szerokość komórek siatki w których umieszczone zostaną ikony przy ustawianiu położenia ikon >= SM_CXICON
Const SM_CYICONSPACING = 39' Wysokość komórek siatki w których umieszczone zostaną ikony przy ustawianiu położenia ikon >= SM_CYICON
Const SM_MENUDROPALIGNMENT = 40' TRUE lub <> 0 jeżeli rozwijane menu jest wyrównywane do prawej w/m odpowiadającego menu, zwraca FALSE lub = 0 jeżeli do lewej
Const SM_PENWINDOWS = 41' TRUE lub <> 0 (uchwyt pióra) jeżeli załadowane jest pióro, FALSE lub 0 w przeciwnym wypadku
Const SM_DBCSENABLED = 42' TRUE lub <> 0 jeżeli ustawiona jest obsługa znaków dwubajtowych (DBCS), FALSE lub 0 w przeciwnym wypadku
Const SM_CMOUSEBUTTONS = 43' liczba przycisków myszy, Zero jeżeli brak myszy
Const SM_CMETRICS = 44' Win 95/98: zwraca liczbę (numer) systemu miar.
Const SM_SECURE = 44' TRUE jeżeli jest system zabezpieczeń, w przeciwnym wypadku FALSE
Const SM_CXEDGE = 45' Szerokość obramowania 3-D okna
Const SM_CYEDGE = 46' Wysokość obramowania 3-D okna
Const CXMINSPACING = 47' Szerokość komórek siatki w których umieszczone zostaną zminimalizowane okna >= SM_CXMINIMIZED
Const SM_CYMINSPACING = 48' Wysokość komórek siatki w których umieszczone zostaną zminimalizowane okna >= SM_CYMINIMIZED.
Const SM_CXSMICON = 49' Szerokość małej ikony
Const SM_CYSMICON = 50' Wysokość małej ikony
Const CYSMCAPTION = 51' Wysokość małego paska tytułowego okna
Const SM_CXSMSIZE = 52' Szerokość małego przycisku Min/Max/X
Const SM_CYSMSIZE = 53' Wysokość małego przycisku Min/Max/X
Const SM_CXMENUSIZE = 54' Szerokość przycisku w menu (np. przycisk zamknij okna dziecka) w wielodokumentowych interfejsach
Const SM_CYMENUSIZE = 55' Wysokość przycisku w menu (np. przycisk zamknij okna dziecka) w wielodokumentowych interfejsach
Const SM_ARRANGE = 56' Pozycja początkowa i kierunek w jaki system ustawia zminimalizowane okna
' • Pozycja początkowa:
Const ARW_BOTTOMLEFT = 0' od dolnego lewego narożnika ekranu (domyślne ustawienie)
Const ARW_BOTTOMRIGHT = 1' od dolnego prawego narożnika ekranu
Const ARW_TOPLEFT = 2' od górnego lewego narożnika ekranu
Const ARW_TOPRIGHT = 3' od górnego prawego narożnika ekranu
Const ARW_HIDE = 8' okna są ukrywane
' • Kierunek:
Const ARW_DOWN = 4' w dół
Const ARW_LEFT = 0' w lewo
Const ARW_RIGHT = 4' w prawo
Const ARW_UP = 0' w górę
Const ARW_STARTRIGHT = ARW_BOTTOMRIGHT
Const ARW_STARTTOP = ARW_TOPLEFT
Const SM_CXMINIMIZED = 57' Szerokość obszaru do którego dopasowane zostaje zminimalizowane okno
Const SM_CYMINIMIZED = 58' Wysokość obszaru do którego dopasowane zostaje zminimalizowane okno
Const SM_CXMAXTRACK = 59' Maksymalna szerokość ramki okna podczas zmiany rozmiaru, powyżej której użytkownik nie może powiększyć okna
Const SM_CYMAXTRACK = 60' Maksymalna wysokość ramki okna podczas zmiany rozmiaru, powyżej której użytkownik nie może powiększyć okna
Const SM_CXMAXIMIZED = 61' Domyślna szerokość okna najwyższego poziomu do jakiej można je zmaksymalizować
Const SM_CYMAXIMIZED = 62' Domyślna wysokość okna najwyższego poziomu do jakiej można je zmaksymalizować
Const SM_NETWORK = 63' Najmniej znaczący bit jest ustawiany dla pracy w sieci, w przeciwnym wypadku jest zerowany
Const SM_CLEANBOOT = 67' Sposób uruchomienia systemy 0 - normalny; 1 - bezpieczny; 2 - bezpieczny (sieciowy)
Const SM_CXDRAG = 68' Szerokość obszaru rozpoczęcia przeciągania (zmiany wielkości) okna
Const SM_CYDRAG = 69' Wysokość obszaru rozpoczęcia przeciągania (zmiany wielkości) okna
Const SM_SHOWSOUNDS = 70' TRUE or nonzero if the user requires an application to present information visually in situations where it would otherwise present the information only in audible form; FALSE, or zero, otherwise.
Const SM_CXMENUCHECK = 71' Domyślna szerokość pola wyboru w odniesieniu do bitmapy menu
Const SM_CYMENUCHECK = 72' Domyślna wysokość pola wyboru w odniesieniu do bitmapy menu
Const SM_SLOWMACHINE = 73' TRUE jeżeli komputer posiada za wolny procesor, w przeciwnym wypadku FALSE
Const SM_MIDEASTENABLED = 74' TRUE jeżeli system nie obsługuje języka hebrajskiego i arabskiego
' • Począwszy od Windows NT 4.0 i Windows 98
Const SM_MOUSEWHEELPRESENT = 75' TRUE lub <> 0 jeżeli zainstalowana jest obsługa kółka myszy, w przeciwnym wypadku FALSE lub Zero
' • Począwszy od Windows NT 5.0 i Windows 98
Const SM_XVIRTUALSCREEN 76' Położenie lewej krawędzi wirtualnego ekranu
Const SM_YVIRTUALSCREEN 77' Położenie górnej krawędzi wirtualnego ekranu
Const SM_CXVIRTUALSCREEN 78' Szerokość wirtualnego ekranu
Const SM_CYVIRTUALSCREEN 79' Wysokość wirtualnego ekranu
Const SM_CMONITORS 80' Ilość monitorów (ekranów) na pulpicie
Const SM_SAMEDISPLAYFORMAT 81' TRUE jeżeli wszystkie monitory (ekrany) mają ustawiony taki sam format wyświetlania kolorów



    lRet = GetSystemMetrics(SM_CYSMICON)

 ΔΔΔ 

 

2.7 GetLocaleInfo (...) - ustawienia lokalne (m.in. Panel Sterowania/Ustawienia regionalne) dotyczące liczb, waluty, godziny, daty, kraju, języka itp.

Private Declare Function GetLocaleInfo Lib "kernel32" _
Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String, _
ByVal cchData As Long) As Long
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_SYSTEM_DEFAULT = &H800
Private Const LOCALE_NEUTRAL = &H0


'    Zwraca ilość znaków zapisanych do docelowego buforu lpLCData, jeżeli parametr cchData równa sie ZERO, zwraca wielkość buforu potrzebnego na przyjęcie zwracanej wartości.
'    lpLCData zawiera zwracaną wartość ustawień lokalnych (m.in. Panel Sterowania/Ustawienia Regionalne) dotyczących: liczby, waluty, godziny, daty, kraju, języka itp.


Const LOCALE_ILANGUAGE = &H1'language ID
Const LOCALE_SLANGUAGE = &H2'localized name of language
Const LOCALE_SENGLANGUAGE = &H1001'English name of language
Const LOCALE_SABBREVLANGNAME = &H3'abbreviated language name
Const LOCALE_SNATIVELANGNAME = &H4'native name of language
Const LOCALE_ICOUNTRY = &H5'country code
Const LOCALE_SCOUNTRY = &H6'localized name of country
Const LOCALE_SENGCOUNTRY = &H1002'English name of country
Const LOCALE_SABBREVCTRYNAME = &H7'abbreviated country name
Const LOCALE_SNATIVECTRYNAME = &H8'native name of country
Const LOCALE_IDEFAULTLANGUAGE = &H9'default language id
Const LOCALE_IDEFAULTCOUNTRY = &HA'default country code
Const LOCALE_IDEFAULTCODEPAGE = &HB'default code page
Const LOCALE_SLIST = &HC'list item separator
Const LOCALE_IMEASURE = &HD'metric system
Const LOCALE_SDECIMAL = &HE'decimal separator
Const LOCALE_STHOUSAND = &HF'thousand separator
Const LOCALE_SGROUPING = &H10'digit grouping
Const LOCALE_IDIGITS = &H11'number of fractional digits
Const LOCALE_ILZERO = &H12'leading zeros for decimal
Const LOCALE_SNATIVEDIGITS = &H13'native ascii 0-9
Const LOCALE_SCURRENCY = &H14'local monetary symbol
Const LOCALE_SINTLSYMBOL = &H15'international monetary symbol
Const LOCALE_SMONDECIMALSEP = &H16'monetary decimal separator
Const LOCALE_SMONTHOUSANDSEP = &H17'monetary thousand separator
Const LOCALE_SMONGROUPING = &H18'monetary grouping
Const LOCALE_ICURRDIGITS = &H19'local monetary digits
Const LOCALE_IINTLCURRDIGITS = &H1A'international monetary digits
Const LOCALE_ICURRENCY = &H1B'positive currency mode
Const LOCALE_INEGCURR = &H1C'negative currency mode
Const LOCALE_SDATE = &H1D'date separator
Const LOCALE_STIME = &H1E'time separator
Const LOCALE_SSHORTDATE = &H1F'short date format string
Const LOCALE_SLONGDATE = &H20'long date format string
Const LOCALE_STIMEFORMAT = &H1003'time format string
Const LOCALE_IDATE = &H21'short date format ordering
Const LOCALE_ILDATE = &H22'long date format ordering
Const LOCALE_ITIME = &H23'time format specifier
Const LOCALE_ICENTURY = &H24'century format specifier
Const LOCALE_ITLZERO = &H25'leading zeros in time field
Const LOCALE_IDAYLZERO = &H26'leading zeros in day field
Const LOCALE_IMONLZERO = &H27'leading zeros in month field
Const LOCALE_S1159 = &H28'AM designator
Const LOCALE_S2359 = &H29'PM designator
Const LOCALE_SDAYNAME1 = &H2A'long name for Monday
Const LOCALE_SDAYNAME2 = &H2B'long name for Tuesday
Const LOCALE_SDAYNAME3 = &H2C'long name for Wednesday
Const LOCALE_SDAYNAME4 = &H2D'long name for Thursday
Const LOCALE_SDAYNAME5 = &H2E'long name for Friday
Const LOCALE_SDAYNAME6 = &H2F'long name for Saturday
Const LOCALE_SDAYNAME7 = &H30'long name for Sunday
Const LOCALE_SABBREVDAYNAME1 = &H31'abbreviated name for Monday
Const LOCALE_SABBREVDAYNAME2 = &H32'abbreviated name for Tuesday
Const LOCALE_SABBREVDAYNAME3 = &H33'abbreviated name for Wednesday
Const LOCALE_SABBREVDAYNAME4 = &H34'abbreviated name for Thursday
Const LOCALE_SABBREVDAYNAME5 = &H35'abbreviated name for Friday
Const LOCALE_SABBREVDAYNAME6 = &H36'abbreviated name for Saturday
Const LOCALE_SABBREVDAYNAME7 = &H37'abbreviated name for Sunday
Const LOCALE_SMONTHNAME1 = &H38'long name for January
Const LOCALE_SMONTHNAME2 = &H39'long name for February
Const LOCALE_SMONTHNAME3 = &H3A'long name for March
Const LOCALE_SMONTHNAME4 = &H3B'long name for April
Const LOCALE_SMONTHNAME5 = &H3C'long name for May
Const LOCALE_SMONTHNAME6 = &H3D'long name for June
Const LOCALE_SMONTHNAME7 = &H3E'long name for July
Const LOCALE_SMONTHNAME8 = &H3F'long name for August
Const LOCALE_SMONTHNAME9 = &H40'long name for September
Const LOCALE_SMONTHNAME10 = &H41'long name for October
Const LOCALE_SMONTHNAME11 = &H42'long name for November
Const LOCALE_SMONTHNAME12 = &H43'long name for December
Const LOCALE_SMONTHNAME13 = &H100E'long name for 13th month
Const LOCALE_SABBREVMONTHNAME1 = &H44'abbreviated name for January
Const LOCALE_SABBREVMONTHNAME2 = &H45'abbreviated name for February
Const LOCALE_SABBREVMONTHNAME3 = &H46'abbreviated name for March
Const LOCALE_SABBREVMONTHNAME4 = &H47'abbreviated name for April
Const LOCALE_SABBREVMONTHNAME5 = &H48'abbreviated name for May
Const LOCALE_SABBREVMONTHNAME6 = &H49'abbreviated name for June
Const LOCALE_SABBREVMONTHNAME7 = &H4A'abbreviated name for July
Const LOCALE_SABBREVMONTHNAME8 = &H4B'abbreviated name for August
Const LOCALE_SABBREVMONTHNAME9 = &H4C'abbreviated name for September
Const LOCALE_SABBREVMONTHNAME10 = &H4D'abbreviated name for October
Const LOCALE_SABBREVMONTHNAME11 = &H4E'abbreviated name for November
Const LOCALE_SABBREVMONTHNAME12 = &H4F'abbreviated name for December
Const LOCALE_SABBREVMONTHNAME13 = &H100F'abbreviated name for 13th month
Const LOCALE_SPOSITIVESIGN = &H50'positive sign
Const LOCALE_SNEGATIVESIGN = &H51'negative sign
Const LOCALE_IPOSSIGNPOSN = &H52'positive sign position
Const LOCALE_INEGSIGNPOSN = &H53'negative sign position
Const LOCALE_IPOSSYMPRECEDES = &H54'monetary symb. precedes pos. amount
Const LOCALE_IPOSSEPBYSPACE = &H55'monetary symb. sep. by space from pos. amount
Const LOCALE_INEGSYMPRECEDES = &H56'monetary symb. precedes neg. amount
Const LOCALE_INEGSEPBYSPACE = &H57'monetary symb. sep. by space from neg. amount
Const LOCALE_SSORTNAME = &H1013'full localized name of the sort (locale ID)
Const LOCALE_INEGNUMBER = &H1010'negative number mode
Const LOCALE_SENGCURRNAME = &H1007'full English name currency associated
Const LOCALE_SNATIVECURRNAME = &H1008'native name currency associated
Const LOCALE_SYEARMONTH = &H1006'Year/Month formatting string for the locale
Const LOCALE_ICALENDARTYPE = &H1009'Current calendar type
Const LOCALE_IOPTIONALCALENDAR = &H100B'Additional calendar types
Const LOCALE_IFIRSTDAYOFWEEK = &H100C'first day in a week
Const LOCALE_IFIRSTWEEKOFYEAR = &H100D'first week of the year
Const LOCALE_IPAPERSIZE = &H100A'Default paper size associated
Const LOCALE_IDEFAULTEBCDICCODEPAGE = &H1012'default EBCDIC code page associated


' przykładowe wywołanie:
Private Sub btnTest_Click()
Dim sBff As String
Dim lRet As Long

' pobierz wielkość buforu
lRet = GetLocaleInfo(LOCALE_USER_DEFAULT, _
LOCALE_SLANGUAGE, _
vbNullChar, 0&)
' przygotuj bufor
sBff = String(lRet, vbNullChar)
lRet = GetLocaleInfo(LOCALE_USER_DEFAULT, _
LOCALE_SLANGUAGE, _
sBff, lRet)

If lRet = 0 Then
MsgBox "Błąd odczytu !"
Else
MsgBox Left$(sBff, lRet - 1)
End If

End Sub

 ΔΔΔ