PDA

View Full Version : مقاله: ساختن فرم always on top



MBG73
جمعه 28 فروردین 1388, 14:47 عصر
امروز می خواهم روش ساختن فرمی را بگم که Always on Top (یعنی همیشه روی همه ی فرم ها قرار بگیره) باشد ؟


Option Explicit
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
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
'
'
Private Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
As Long
If Topmost = True Then 'Make the window topmost
SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
Else
SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
SetTopMostWindow = False
End If
End Function



Private Sub Form_Load()
Dim lR As Long
lR = SetTopMostWindow(Form1.hwnd, True)
'For inactive always on top Properties : lR = SetTopMostWindow(Form1.hwnd, False)
End Sub

morteza_261
شنبه 29 فروردین 1388, 12:21 عصر
سلام

ممنون.ولی چند نکته:

1-کدهای خود را در تگ کد بزارید تا خواندن آنها آسان تر شود:



Option Explicit
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
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
'
'
Private Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
As Long
If Topmost = True Then 'Make the window topmost
SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
Else
SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
SetTopMostWindow = False
End If
End Function




Private Sub Form_Load()
Dim lR As Long
lR = SetTopMostWindow(Form1.hwnd, True)
'For inactive always on top Properties : lR = SetTopMostWindow(Form1.hwnd, False)
End Sub


2-نیازی به این همه کد نوشتن نیست،با همین یک خطکد این اتفاق می افتد:


Me.TopMost = True

البته این خاصیت رو میشه از Properties فرم هم انتخاب کرد.

ایام به کام