Программирование на Visual Basic

Ваша форма поверх всех окон, таскание вашей формы за любое место:

Как я и обещал, в этом уроке мы разберем более сложные примеры программирования, но и более интересные и нужные. Наша сегодняшняя задача научиться делать, что бы форма была поверх других форм и таскание формы за любое место. Первая задача так же может подходить для усовершенствования урока №4 или для приколов. Может быть в следующем или через один урок расскажу, как сделать какой-нибудь прикол. Ну, а пока...

  1. Создайте форму с именем frmMain и модуль mdlOnTop.

Теперь вставляем этот код в модуль:

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    Public Const HWND_NOTOPMOST = -2    Public Const HWND_TOPMOST = -1    Public Const SWP_NOACTIVATE = &H10    Public Const SWP_NOMOVE = &H2    Public Const SWP_NOSIZE = &H1Public Sub SetFormPosition(frmHand1 As Long, TopPosition As Boolean)  If TopPosition Then  SetWindowPos frmHand1, HWND_TOPMOST, 0, 0, 0, 0, _  SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE  Else  SetWindowPos frmHandl, HWND_NOTOPMOST, 0, 0, 0, 0, _ SWP_NOSIZE Or SWP_NOMOVE  End If End Sub

Теперь добавляем в форму одну строчку, например, в процедуру Form_Load:

Private Sub Form_Load() Call SetFormPosition(Me.hwnd, True)End Sub

 

Ну, а сейчас разберем, как таскать форму за любое "место" =). Иногда эта функция очень нужна ! Ни чего нового добавлять не нового добавлять не нужно. Смотрим и запоминаем:

Const WM_NCLBUTTONDOWN = &HA1Const HTCAPTION = 2Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal hWnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function ReleaseCapture Lib "user32" () As LongPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,Y As Single)    Call ReleaseCapture    Call SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)End SubВсе. Запускаем и таскаем форму, которая поверх всех окон, за любое место =)!

Как видите сегодня нет ни одного комментария, т.к. это API функции, а как их комментировать я чего-то не знаю =). Если кто знает, напишите, не поленитесь ! Так же нет скриншотов, так как нечего скриншотить =) ! Жду ваших часов с применением сегодняшнего урока. Обязательно ! =) Готовый пример я писать не стал, лень... честно, просто не охота ! Может попозже.

P.S. Если вы думаете, что "_" это какой-то секретный знак, то ошибаетесь ! Это просто означает перенос строки !

Hosted by uCoz