Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Статья: Как украшать свои программы в среде программирования Visual Basic. |

26.09.2006, 11:46
|
|
Познающий
Регистрация: 15.07.2006
Сообщений: 48
Провел на форуме: 126131
Репутация:
26
|
|
Статья: Как украшать свои программы в среде программирования Visual Basic.
Как украшать свои программы в среде программирования Visual Basic.
Вот решил написать статейку о том как украшать свои программы в среде Visual Basic.
Делаем приклеивание дочернего окна к родительскому. Это финча в основном используется мною (да и программы, которые я видел) для меню опций, очень удобно!
Вот как это будет выглядеть:
Дополнительные модули скачать
Теперь сам код приделывания окон
Для родительского окна
PHP код:
Private Sub Form_Load()
' Hook into messages for this window.
Call HookWindow(Me.hWnd, Me)
' Create, load, and hook messages for sub form.
Set m_Sub = New Form2
Load m_Sub
Call HookWindow(m_Sub.hWnd, Me)
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Always unhook before unloading!
Call UnhookWindow(m_Sub.hWnd)
Unload m_Sub
Set m_Sub = Nothing
' Unhook this (main) one too!
Call UnhookWindow(Me.hWnd)
End Sub
Private Function IMessageSink_WindowProc(hWnd As Long, msg As Long, wp As Long, lp As Long) As Long
Static rMain As RECT
Static rSub As RECT
Dim Result As Long
Select Case hWnd
Case Me.hWnd
Select Case msg
Case WM_MOVE, WM_MOVING, WM_SIZE
' Move subform to desired position.
If Not (m_Sub Is Nothing) Then
' Retrieve coordinates for both windows.
Call GetWindowRect(hWnd, rMain)
Call GetWindowRect(m_Sub.hWnd, rSub)
' Position subform appropriately.
Call MoveWindow(m_Sub.hWnd, rMain.Right, rMain.Top, rSub.Right - rSub.Left, rMain.Bottom - rMain.Top, True)
' Store new position of subform.
Call GetWindowRect(m_Sub.hWnd, rSub)
End If
Result = InvokeWindowProc(hWnd, msg, wp, lp)
Case Else
' Pass along to default window procedure.
Result = InvokeWindowProc(hWnd, msg, wp, lp)
End Select
Case m_Sub.hWnd
Select Case msg
Case WM_ACTIVATE
' Have main form retain active titlebar.
Result = InvokeWindowProc(hWnd, msg, wp, lp)
Call SendMessage(Me.hWnd, WM_NCACTIVATE, 1, ByVal 0&)
Case WM_MOVING
' Copy stored position of subform to the position
' the user is trying to drag it to.
Call CopyMemory(ByVal lp, rSub, Len(rSub))
Result = 1
Case Else
' Pass along to default window procedure.
Result = InvokeWindowProc(hWnd, msg, wp, lp)
End Select
End Select
' Return desired result code to Windows.
IMessageSink_WindowProc = Result
End Function
Private Sub m_Sub_Hide()
' User clicked [X] on subform.
Check1.Value = False
End Sub
Для дочернего
PHP код:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
' Notify parent that user clicked [X].
Cancel = True
RaiseEvent Hide
End If
End Sub
Следующая финча. Создаем кнопки в виде пилюлек.
Дополнительные модули скачать
Вот так это выглядит:
Ну и программный код элементарный:
Для мыла: Shell "start mailto: mail@mail.ru"
Ну и для нашего Античата:
Shell "start http://www.antichat.ru"
Выход пишется так: end
Далее. Если у вас сложная программа и вы сделали так чтобы в начале шла строка загрузки то есть прогресс бар вот даю вам модифицированный, красивый элемент.
Дополнительные модули скачать
Выглядит это так:

Ну и программный код:
PHP код:
Private Sub Timer1_Timer()
ProgBar1.Value = ProgBar1.Value + 1
If ProgBar1.Value = 100 Then
ProgBar1.Clear
End If
Form1.Caption = ProgBar1.Value & "%" & "icq 996757"
End Sub
Ну пожалуй хватит насиловать ваш мозг. Если у вас возникнут проблемы пиши здесь, если не будет получатся то я выложу все исходники и сурсы.
Спасибо за внимание
(с) d1n 2006.
Последний раз редактировалось d1n; 26.09.2006 в 11:53..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|