Visual Basic – Prozor uvek na vrhu

Nekada će vam sigurno zatrebati da vaša Visual Basic aplikacija poseduje mogućnost „Always on top“, tj. da prozor vaše aplikacije bude iznad ostalih prozora. Klasičan primer vezan za ovu mogućnost je program „Časovnik“, čiji se prozor sa prikazanim vremenom nalazi iznad svih prozora na ekranu.

Da ovu mogućnost primenili i na naše aplikacije u Visual Basic-u ćemo iskoristiti Windows API funkciju zvanu „SetWindowPos“. Definicija same funkcije, koja se smešta u sekciju „General Declarations“ izgleda ovako:


Public 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

Sledećim redovima pojasnićemo samu funkciju:
  • hWndInsertAfter – Windows konstanta koja omogućuje da prozor bude na vrhu.
  • X – nova pozicija prozora u odnosu na levu ivicu.
  • Y – nova pozicija prozora u odnosu na vrh.
  • cx – nova širina prozora.
  • cy – nova visina prozora.
Cela ova funkcija možet se dobiti kopiranjem iz API Viewer-a. A sada evo u primera funkcije za postavljanje određenog prozora na vrh:

Public Function SetWinPos(iPos As Integer,
lHWnd As Long) As Boolean

Dim lWinPos As Long
‘varijabla koja sadrzi vrednost pozicije prozora
Dim l As Long
‘Koriscenje SELECT CASE instrukcije za
‘podesavanje vrednosti API Window konstante

Select Case iPos
‘Prozor je podesen na regularnu poziciju
Case 0
lWinPos = HWND_NOTOPMOST
‘Podesavanje prozora uvek na vrhu
Case 1
lWinPos = HWND_TOPMOST
Case Else
Exit Function
End Select

‘pozivanje API SetWindowPos funkcije
If SetWindowPos(lHWnd, lWinPos, 0, 0, 0, 0,
SWP_NOMOVE + SWP_NOSIZE) Then
‘Ukoliko je funkcija veca od 0 (FALSE),
‘operacija je uspesna
SetWinPos = True
End If
End Function

Pratite Krstaricu na www.krstarica.com