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