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

Discussion in 'Статьи' started by Ad, 26 Sep 2006.

  1. Ad

    Ad Elder - Старейшина

    Joined:
    15 Jul 2006
    Messages:
    35
    Likes Received:
    15
    Reputations:
    4
    Как украшать свои программы в среде программирования Visual Basic.

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


    Делаем приклеивание дочернего окна к родительскому. Это финча в основном используется мною (да и программы, которые я видел) для меню опций, очень удобно!
    Вот как это будет выглядеть:
    [​IMG]

    Дополнительные модули скачать

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

    Для родительского окна
    PHP:
     Private Sub Form_Load()
       
    ' Hook into messages for this window.
       Call HookWindow(Me.hWnd, Me)
       
       ' 
    Createload, and hook messages for sub form.
       
    Set m_Sub = New Form2
       Load m_Sub
       Call HookWindow
    (m_Sub.hWndMe)
    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 (mainone too!
       
    Call UnhookWindow(Me.hWnd)
    End Sub

    Private Function IMessageSink_WindowProc(hWnd As Longmsg As Longwp As Longlp 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_MOVEWM_MOVINGWM_SIZE
                   
    ' Move subform to desired position.
                   If Not (m_Sub Is Nothing) Then
                      ' 
    Retrieve coordinates for both windows.
                      
    Call GetWindowRect(hWndrMain)
                      
    Call GetWindowRect(m_Sub.hWndrSub)
                      
    ' 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.hWndrSub)
                   
    End If
                   
    Result InvokeWindowProc(hWndmsgwplp)
                   
                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(hWndmsgwplp)
                   
    Call SendMessage(Me.hWndWM_NCACTIVATE1ByVal 0&)
                   
                Case 
    WM_MOVING
                   
    ' Copy stored position of subform to the position
                   ' 
    the user is trying to drag it to.
                   
    Call CopyMemory(ByVal lprSubLen(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 IntegerUnloadMode As Integer)
       If 
    UnloadMode vbFormControlMenu Then
          
    ' Notify parent that user clicked [X].
          Cancel = True
          RaiseEvent Hide
       End If
    End Sub

    Следующая финча. Создаем кнопки в виде пилюлек.
    Дополнительные модули скачать

    Вот так это выглядит:
    [​IMG]

    Ну и программный код элементарный:
    Для мыла: Shell "start mailto: [email protected]"

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

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

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

    Дополнительные модули скачать

    Выглядит это так:
    [​IMG]
    Ну и программный код:
    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.
     
    #1 Ad, 26 Sep 2006
    Last edited: 26 Sep 2006
    4 people like this.
  2. em00s7

    em00s7 Elder - Старейшина

    Joined:
    2 May 2006
    Messages:
    169
    Likes Received:
    37
    Reputations:
    -10
    Visual Basic это не гут
     
  3. Ad

    Ad Elder - Старейшина

    Joined:
    15 Jul 2006
    Messages:
    35
    Likes Received:
    15
    Reputations:
    4
    em00s7
    Зря так говоришь, знаешь бота от System'a? Он написан на Visual Basic! Да и не хуже он Delphi!
     
  4. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    А вот прогресс бар зачем? ) Чтобы красивее выглядить? А таймер с каким интервалом стоит? В одну секунду? Тоесть надо ждать 100 секунд для загрузки проги? Ваще это нафиг не нуна...
     
  5. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    Да,статья нормальная прочитал вроде бы...
    Кстати, если надо то смогу написать тоже небольшую статью, как сделать чтобы программы на делфи были в стиле WindowsXP (кто не знает они имеют стандартный вид) :cool:
     
  6. Ad

    Ad Elder - Старейшина

    Joined:
    15 Jul 2006
    Messages:
    35
    Likes Received:
    15
    Reputations:
    4
    Я тоже хотел сюда запостить оформление под стиль XP только на VB, но компоненты много весят ажно 190 кб я их залить не смогу проблемы с нетом. Да и разберется не каждый начнём с легкого все будет. Намек ясен? :)
    bul.666
    Интервал по стандарту. Попробуй сделать по статье и увидишь. Видно ты не очень шариш в этом (без обид) заргузка идет в течении 15 секунд.
     
  7. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    Странно, мне не надо никаких компонентов. Просто создать .xml файл с некоторым содержимым, да + пару настроек в самом Делфи сделать.
     
  8. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Не знаю уже как 2 года не программер на Vb, и не хочу к нему возращаться, и мне кажется что Vb это уже Bad
     
  9. Ad

    Ad Elder - Старейшина

    Joined:
    15 Jul 2006
    Messages:
    35
    Likes Received:
    15
    Reputations:
    4
    DIAgen
    Ну как говорится твоё право. Дельфи и Визуал оба по своему хороши.
    Dr.Check
    Ну ты пишешь на стандартных компонентах, а я нет там dll итд глянь хоть один архив поймешь о чём я :)
     
  10. em00s7

    em00s7 Elder - Старейшина

    Joined:
    2 May 2006
    Messages:
    169
    Likes Received:
    37
    Reputations:
    -10
    хахах мобаил ты сам то его знаешь ?? ты вообще хоть какой-нить язык знаеш?)) бля ты меня порожаешь не зная ставить - ......
     
    #10 em00s7, 27 Sep 2006
    Last edited by a moderator: 27 Sep 2006
  11. Rebz

    Rebz Banned

    Joined:
    8 Nov 2004
    Messages:
    4,052
    Likes Received:
    1,534
    Reputations:
    1,128
    em00s7, с твой стороны действительно флейм, минуса ставить не буду, но устно предупрежу. Если тебе не нравится VB, лучше промолчи. Никому подобные сообщения типа это гуд, а это не гуд - не нужны и расцеинваются они как флейм. Делай выводы. В принципе, минус заслуженно стоит.
     
    1 person likes this.
  12. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    Diagen ю а вронг! Назови мне 2 языка на которых можно написать то, что на VB написать нельзя! (С и Asm не называй - ЭТО 31337 COD1Ng_)
     
  13. _GaLs_

    _GaLs_ Elder - Старейшина

    Joined:
    21 Apr 2006
    Messages:
    431
    Likes Received:
    252
    Reputations:
    48
    Статья и правдо хорошая. Даже в чём то мне помагла. Автор лови + !