PDA

Просмотр полной версии : Статья: Как украшать свои программы в среде программирования Visual Basic.


Ad
26.09.2006, 11:46
Как украшать свои программы в среде программирования Visual Basic.

Вот решил написать статейку о том как украшать свои программы в среде Visual Basic.


Делаем приклеивание дочернего окна к родительскому. Это финча в основном используется мною (да и программы, которые я видел) для меню опций, очень удобно!
Вот как это будет выглядеть:
http://img247.imageshack.us/img247/3180/prikrepleniedochkrodjh9.gif

Дополнительные модули скачать (http://slil.ru/23167672)

Теперь сам код приделывания окон

Для родительского окна
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

Для дочернего
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


Следующая финча. Создаем кнопки в виде пилюлек.
Дополнительные модули скачать ( http://slil.ru/23167699)

Вот так это выглядит:
http://img208.imageshack.us/img208/2130/pilulipi3.gif

Ну и программный код элементарный:
Для мыла: Shell "start mailto: mail@mail.ru"

Ну и для нашего Античата:
Shell "start http://www.antichat.ru"

Выход пишется так: end

Далее. Если у вас сложная программа и вы сделали так чтобы в начале шла строка загрузки то есть прогресс бар вот даю вам модифицированный, красивый элемент.

Дополнительные модули скачать ( http://slil.ru/23167725)

Выглядит это так:
http://img208.imageshack.us/img208/3489/progressje4.gif
Ну и программный код:
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.

em00s7
26.09.2006, 12:34
Visual Basic это не гут

Ad
26.09.2006, 13:05
em00s7
Зря так говоришь, знаешь бота от System'a? Он написан на Visual Basic! Да и не хуже он Delphi!

bul.666
26.09.2006, 14:57
А вот прогресс бар зачем? ) Чтобы красивее выглядить? А таймер с каким интервалом стоит? В одну секунду? Тоесть надо ждать 100 секунд для загрузки проги? Ваще это нафиг не нуна...

Ch3ck
26.09.2006, 15:46
Да,статья нормальная прочитал вроде бы...
Кстати, если надо то смогу написать тоже небольшую статью, как сделать чтобы программы на делфи были в стиле WindowsXP (кто не знает они имеют стандартный вид) :cool:

Ad
26.09.2006, 17:02
Да,статья нормальная прочитал вроде бы...
Кстати, если надо то смогу написать тоже небольшую статью, как сделать чтобы программы на делфи были в стиле WindowsXP (кто не знает они имеют стандартный вид)
Я тоже хотел сюда запостить оформление под стиль XP только на VB, но компоненты много весят ажно 190 кб я их залить не смогу проблемы с нетом. Да и разберется не каждый начнём с легкого все будет. Намек ясен? :)
bul.666
Интервал по стандарту. Попробуй сделать по статье и увидишь. Видно ты не очень шариш в этом (без обид) заргузка идет в течении 15 секунд.

Ch3ck
26.09.2006, 17:28
но компоненты много весят ажно 190 кб
Странно, мне не надо никаких компонентов. Просто создать .xml файл с некоторым содержимым, да + пару настроек в самом Делфи сделать.

DIAgen
26.09.2006, 19:47
Не знаю уже как 2 года не программер на Vb, и не хочу к нему возращаться, и мне кажется что Vb это уже Bad

Ad
27.09.2006, 09:23
DIAgen
Ну как говорится твоё право. Дельфи и Визуал оба по своему хороши.
Dr.Check
Ну ты пишешь на стандартных компонентах, а я нет там dll итд глянь хоть один архив поймешь о чём я :)

em00s7
27.09.2006, 10:39
-1

Статья: Как украшать св...
26.09.2006 13:55
Mobile
Visual Basic гуд! За флейм!
хахах мобаил ты сам то его знаешь ?? ты вообще хоть какой-нить язык знаеш?)) бля ты меня порожаешь не зная ставить - ......

Rebz
27.09.2006, 16:55
em00s7, с твой стороны действительно флейм, минуса ставить не буду, но устно предупрежу. Если тебе не нравится VB, лучше промолчи. Никому подобные сообщения типа это гуд, а это не гуд - не нужны и расцеинваются они как флейм. Делай выводы. В принципе, минус заслуженно стоит.

KindEcstasy
30.09.2006, 14:02
Diagen ю а вронг! Назови мне 2 языка на которых можно написать то, что на VB написать нельзя! (С и Asm не называй - ЭТО 31337 COD1Ng_)

_GaLs_
05.10.2006, 13:12
Статья и правдо хорошая. Даже в чём то мне помагла. Автор лови + !