Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Visual Basic - problem z zamykaniem aplikacji

10 Maj 2005 12:53 1224 9
  • Poziom 27  
    Witam!
    Mam pytanie dlaczego po nacisnieciu przycisku zamknij (zaznaczonego czerwona strzałką) zamyka sie jedynie okno programu, a sam program nadal pracuje w tle co można zauważyć w menadżeże zadań. Mozliwe jest natomiast zamknięcie programu np przyciskiem "end" rownież widocznym na obrazku.

    Prosze o pomoc i pozdrawiam, Bartek
  • Poziom 12  
    a jest to twój program ? możesz pokazać kod źródłowy ?
  • Poziom 27  
    Nie znam kodu ale wydaje mi sie ze jest to zrobione specjalnie ze by program dalej pracowal w shellu. a pod prszyciskiem poprostu jest komenda "END"
    np:

    Code:
    Private Sub End_Click()
    
    End
    End Sub


    Jak masz kod zrodlowy to zaraz brdzie wiadomo.
  • Poziom 27  
    Ten program to gra tetris napisana w visual basicu. Wczesniej program zamykal sie normalnie. Dołączam kod do głównej formatki, przy ktorej powstaje ten problem.

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

    If KeyCode = 32 And Timer1.Enabled = True Then ' wlaczenie/ wyłączenie pauzy - SPACJA
    Timer1.Enabled = False
    Label2.Visible = True
    Else
    Timer1.Enabled = True
    Label2.Visible = False

    End If

    If KeyCode = 38 And Fig > 1 Then Rotera 'klawisz strzałka w gore
    If KeyCode = 37 Then 'klawisz strzałka w dól
    ok = 1
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True And X + i - 1 - 1 > 0 Then
    If n(X + i - 1 - 1, Y - i2 + 1) = True Then ok = 0
    End If
    If s(i, i2) = True And X + i - 1 - 1 < 1 Then ok = 0
    Next i2: Next i
    If ok = 1 Then
    X = X - 1
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True Then
    If s(i + 1, i2) = False Then Shape1(coor(X + i, Y - i2 + 1)).FillColor = RGB(255, 255, 255)
    End If
    If s(i, i2) = True Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = Färg
    Next i2: Next i
    End If
    End If
    If KeyCode = 39 Then
    ok = 1
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True And X + i - 1 + 1 < 11 Then
    If n(X + i - 1 + 1, Y - i2 + 1) = True Then ok = 0
    End If
    If s(i, i2) = True And X + i - 1 + 1 > 10 Then ok = 0
    Next i2: Next i
    If ok = 1 Then
    X = X + 1
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True Then
    If s(i - 1, i2) = False Then Shape1(coor(X + i - 2, Y - i2 + 1)).FillColor = RGB(255, 255, 255)
    End If
    If s(i, i2) = True Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = Färg
    Next i2: Next i
    End If
    End If
    If KeyCode = 40 And Fig > 0 Then
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = RGB(255, 255, 255)
    Next i2: Next i
    Do
    Y = Y - 1
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True And Y - i2 + 1 = 1 Then Fig = 0
    If Y - i2 > 0 And X + i - 1 > 0 And X + i - 1 < 11 Then
    If s(i, i2) = True And n(X + i - 1, Y - i2) = True Then Fig = 0
    End If
    Next i2: Next i
    Loop Until Fig = 0
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = Färg
    If s(i, i2) = True Then n(X + i - 1, Y - i2 + 1) = True
    Next i2: Next i
    End If
    End Sub
    Private Sub Form_Load()


    For i = 1 To 4: For i2 = 1 To 4: s2(i, i2) = False: Next i2: Next i
    For i = 1 To 10: For i2 = 1 To 25: n(i, i2) = False: Next i2: Next i
    Score = -10
    Timer1.Interval = Hast
    'zmiany kolorów
    For i = 0 To 11
    Shape3(i).BorderColor = &HE0E0E0
    Shape3(i).FillStyle = 0
    Shape3(i).FillColor = &HE0E0E0
    Next i
    For i = 0 To 249
    Shape1(i).BorderColor = RGB(255, 255, 255)
    Shape1(i).FillStyle = 0
    Shape1(i).FillColor = RGB(255, 255, 255)
    Next i
    Fig2 = 0
    Nyfig
    End Sub
    Function coor(xx, yy)
    coor = (yy - 1) * 10 + xx - 1 '
    End Function







    Private Sub Timer1_Timer()
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True And Y - i2 + 1 = 1 Then Fig = 0
    If Y - i2 > 0 And X + i - 1 > 0 And X + i - 1 < 11 Then
    If s(i, i2) = True And n(X + i - 1, Y - i2) = True Then Fig = 0
    End If
    Next i2: Next i
    If Fig = 0 Then
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True Then n(X + i - 1, Y - i2 + 1) = True
    Next i2: Next i
    Ner
    Nyfig
    Else
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True And s(i, i2 - 1) = False Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = RGB(255, 255, 255)
    Next i2: Next i
    End If
    Y = Y - 1
    For i = 1 To 4: For i2 = 1 To 4
    If s(i, i2) = True Then
    If Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor <> RGB(255, 255, 255) And Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor <> Färg Then Gameover: Exit Sub
    End If
    If s(i, i2) = True Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = Färg
    Next i2: Next i
    End Sub
    Public Sub Nyfig()
    Timer1.Interval = Hast
    Fig = Fig2
    Färg = Färg2
    Fig2 = Int(Rnd * 7) + 1
    X = 4
    Y = 26
    Rot = 1
    For i = 1 To 4: For i2 = 1 To 4: s(i, i2) = s2(i, i2): s2(i, i2) = 0: Next i2: Next i
    Select Case Fig2
    Case 1
    s2(2, 2) = True
    s2(3, 2) = True
    s2(2, 3) = True
    s2(3, 3) = True
    Färg2 = RGB(255, 0, 0)
    Case 2
    s2(1, 2) = True
    s2(2, 2) = True
    s2(3, 2) = True
    s2(4, 2) = True
    Färg2 = RGB(0, 180, 0)
    Case 3
    s2(2, 1) = True
    s2(3, 1) = True
    s2(3, 2) = True
    s2(3, 3) = True
    Färg2 = RGB(255, 150, 0)
    Case 4
    s2(3, 1) = True
    s2(2, 1) = True
    s2(2, 2) = True
    s2(2, 3) = True
    Färg2 = RGB(100, 100, 100)
    Case 5
    s2(3, 1) = True
    s2(3, 2) = True
    s2(3, 3) = True
    s2(2, 2) = True
    Färg2 = RGB(200, 0, 200)
    Case 6
    s2(2, 1) = True
    s2(2, 2) = True
    s2(3, 2) = True
    s2(3, 3) = True
    Färg2 = RGB(100, 100, 255)
    Case 7
    s2(3, 1) = True
    s2(3, 2) = True
    s2(2, 2) = True
    s2(2, 3) = True
    Färg2 = RGB(0, 200, 200)
    End Select
    For i = 1 To 4: For i2 = 1 To 3
    Shape3((i2 - 1) * 4 + i - 1).FillColor = &HE0E0E0
    If s2(i, i2) = True Then Shape3((i2 - 1) * 4 + i - 1).FillColor = Färg2
    Next i2: Next i
    End Sub

    Public Sub Rotera()
    Rot2 = Rot + 1
    If Rot2 = 5 Then Rot2 = 1
    If (Fig = 2 Or Fig > 5) And Rot2 = 3 Then Rot2 = 1
    For i = 1 To 4: For i2 = 1 To 4: s3(i, i2) = 0: Next i2: Next i
    Select Case Fig
    Case 2
    Select Case Rot2
    Case 1
    s3(1, 2) = True
    s3(2, 2) = True
    s3(3, 2) = True
    s3(4, 2) = True
    Case 2
    s3(2, 1) = True
    s3(2, 2) = True
    s3(2, 3) = True
    s3(2, 4) = True
    End Select
    Case 3
    Select Case Rot2
    Case 1
    s3(2, 1) = True
    s3(3, 1) = True
    s3(3, 2) = True
    s3(3, 3) = True
    Case 2
    s3(4, 1) = True
    s3(4, 2) = True
    s3(3, 2) = True
    s3(2, 2) = True
    Case 3
    s3(3, 3) = True
    s3(2, 3) = True
    s3(2, 2) = True
    s3(2, 1) = True
    Case 4
    s3(2, 2) = True
    s3(2, 1) = True
    s3(3, 1) = True
    s3(4, 1) = True
    End Select
    Case 4
    Select Case Rot2
    Case 1
    s3(3, 1) = True
    s3(2, 1) = True
    s3(2, 2) = True
    s3(2, 3) = True
    Case 2
    s3(2, 1) = True
    s3(3, 1) = True
    s3(4, 1) = True
    s3(4, 2) = True
    Case 3
    s3(3, 1) = True
    s3(3, 2) = True
    s3(3, 3) = True
    s3(2, 3) = True
    Case 4
    s3(2, 1) = True
    s3(2, 2) = True
    s3(3, 2) = True
    s3(4, 2) = True
    End Select
    Case 5
    Select Case Rot2
    Case 1
    s3(3, 1) = True
    s3(3, 2) = True
    s3(3, 3) = True
    s3(2, 2) = True
    Case 2
    s3(3, 1) = True
    s3(2, 2) = True
    s3(3, 2) = True
    s3(4, 2) = True
    Case 3
    s3(2, 1) = True
    s3(2, 2) = True
    s3(2, 3) = True
    s3(3, 2) = True
    Case 4
    s3(2, 1) = True
    s3(3, 1) = True
    s3(4, 1) = True
    s3(3, 2) = True
    End Select
    Case 6
    Select Case Rot2
    Case 1
    s3(2, 1) = True
    s3(2, 2) = True
    s3(3, 2) = True
    s3(3, 3) = True
    Case 2
    s3(2, 2) = True
    s3(3, 2) = True
    s3(3, 1) = True
    s3(4, 1) = True
    End Select
    Case 7
    Select Case Rot2
    Case 1
    s3(3, 1) = True
    s3(3, 2) = True
    s3(2, 2) = True
    s3(2, 3) = True
    Case 2
    s3(2, 1) = True
    s3(3, 1) = True
    s3(3, 2) = True
    s3(4, 2) = True
    End Select
    End Select
    ok = 1
    For i = 1 To 4: For i2 = 1 To 4
    If s3(i, i2) = True Then
    If X + i - 1 < 1 Or X + i - 1 > 10 Or Y - i2 + 1 < 1 Then ok = 0
    If ok = 1 Then
    If n(X + i - 1, Y - i2 + 1) = True Then ok = 0
    End If
    End If
    Next i2: Next i
    If ok = 0 Then Exit Sub
    Rot = Rot2
    For i = 1 To 4: For i2 = 1 To 4
    If s3(i, i2) = True And s(i, i2) = False Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = Färg
    If s3(i, i2) = False And s(i, i2) = True Then Shape1(coor(X + i - 1, Y - i2 + 1)).FillColor = RGB(255, 255, 255)
    s(i, i2) = s3(i, i2)
    Next i2: Next i
    End Sub
    Public Sub Ner()
    Score = Score + 10
    Label3.Caption = Score
    For i2 = 25 To 1 Step -1
    ok = 1
    For i = 1 To 10
    If n(i, i2) = False Then ok = 0
    Next i
    If ok = 1 Then

    Tetris.SetFocus
    Score = Score + 150
    Label3.Caption = Score
    For i = 1 To 10
    For i3 = i2 To 24
    n(i, i3) = n(i, i3 + 1)
    Shape1(coor(i, i3)).FillColor = Shape1(coor(i, i3 + 1)).FillColor
    Next i3
    Next i
    End If
    Next i2
    End Sub
    'koniec gry
    Public Sub Gameover()
    SoundForVB1.Stop 'wyłączenie muzyki po zamknięciu programu
    SoundForVB2.Play "koniec.wav" 'odtworzenie pliku "koniec.wav"

    MsgBox "Liczba punktów: " & Score 'pokazanie w msgbox końcowego wyniku gry

    Unload Me
    Tetris2.Show
    End Sub
    'włączenie pauzy
    Private Sub Wstrzymaj_Click()
    Timer1.Enabled = False
    End Sub
    'wyłączenie pauzy
    Private Sub Wznów_Click()
    Timer1.Enabled = True
    End Sub



    'zamknięcie programu
    Private Sub zakoncz_Click()
    SoundForVB1.Stop 'wyłączenie muzyki po zamknięciu programu
    End
    End Sub
    'zmiana koloru tła na zielony
    Private Sub zielony_Click()
    Tetris.BackColor = &HC0FFC0
    Label1.BackColor = &HC0FFC0
    Label2.BackColor = &HC0FFC0
    Shape2.FillColor = &HC0FFC0
    End Sub
    'zmiana koloru tła na żółty
    Private Sub zolty_Click()
    Tetris.BackColor = &HC0FFFF
    Label1.BackColor = &HC0FFFF
    Label2.BackColor = &HC0FFFF
    Shape2.FillColor = &HC0FFFF
    End Sub
    'zmiana koloru tła na pomarańczowy
    Private Sub pomaranczowy_Click()
    Tetris.BackColor = &HC0E0FF
    Label1.BackColor = &HC0E0FF
    Label2.BackColor = &HC0E0FF
    Shape2.FillColor = &HC0E0FF
    End Sub
    'zmiana koloru tła na różowy
    Private Sub rozowy_Click()
    Tetris.BackColor = &HC0C0FF
    Label1.BackColor = &HC0C0FF
    Label2.BackColor = &HC0C0FF
    Shape2.FillColor = &HC0C0FF
    End Sub
    'zmiana koloru tła na szary
    Private Sub szary_Click()
    Tetris.BackColor = &HE0E0E0
    Label1.BackColor = &HE0E0E0
    Label2.BackColor = &HE0E0E0
    Shape2.FillColor = &HE0E0E0
    End Sub
    'zmiana koloru tła na błękitny
    Private Sub blekitny_Click()
    Tetris.BackColor = 16777152
    Label1.BackColor = 16777152
    Label2.BackColor = 16777152
    Shape2.FillColor = 16777152
    End Sub

    Private Sub Pomoc_Click()
    Pomoc1.Visible = True
    Timer1.Enabled = False ' zatrzymanie gry
    Label2.Visible = True
    End Sub
    Private Sub About_Click()
    About2.Visible = True
    Timer1.Enabled = False ' zatrzymanie gry
    Label2.Visible = True
    End Sub
    'odtwarzanie muzyki
    Private Sub Play_Click()
    SoundForVB1.Play "kkk.wav"
    End Sub
    'zatrzymywanie odtwarzania
    Private Sub Stop_Click()
    SoundForVB1.Stop
    End Sub
    'kontakt wosik(malpa)op.pl
    Private Sub autor_Click()
    pkLink1.Start "mailto:wosik@op.pl"
    Timer1.Enabled = False ' zatrzymanie gry
    Label2.Visible = True
    End Sub
    'strona www.pcz.pl
    Private Sub politechnika_Click()
    pkLink2.Start "www.pcz.pl"
    Timer1.Enabled = False ' zatrzymanie gry
    Label2.Visible = True
    End Sub
    'regulacja głośności w menu Muzyka
    Private Sub glosnosc_Click()
    G = Shell("sndvol32", vbNormalFocus)
    Timer1.Enabled = False 'wstrzymanie gry
    Label2.Visible = True
    End Sub
    'regulacja głośności w menu Ustawienia
    Private Sub głosnosc_Click()
    G = Shell("sndvol32", vbNormalFocus)
    Timer1.Enabled = False 'wstrzymanie gry
    Label2.Visible = True
    End Sub
  • Pomocny post
    Poziom 23  
    Hej

    W głównej formie (ta którą zamykasz) daj takie coś :

    Private Sub Form_Unload(Cancel As Integer)
    End
    End Sub

    Teraz jak naciśniesz X to zamknie się cały program.
  • Poziom 27  
    Dzieki za pomoc. Czasem wystarczy mały szczegół i już wszystko gra. To chyba dlatego programowanie jest takie fajne :)

    Pozdrawiam wszystkich!
  • Poziom 16  
    Swoją drogą to ciekawe... masz w tym projekcie jakieś inne formy? Bo jeśli nie to interesowałby mnie cały kod tego programu... A po kliknięciu X program działa w tle jako uruchomiony program czy proces?
  • Poziom 27  
    Teraz jest już wszystko w porządku, ale wczesniej zamykało sie jedynie okno a program nadal pracował w tle. Czyli np byla odtwarzana muzyka która towarzyszy podczas grania. To jest tylko kod dotyczący jednej z formatek. Teraz pojawiły się jeszcze inne np. ekran powitalny z mozliwością wyboru stopnia trudności gry i jezyka w jakim są wyświetlane napisy. Jak już dokończe prace nad nim to mogę wysłać zainteresowanym gotową gre.

    Pozdrawiam.
  • Poziom 16  
    Chyb mnie nie do końca zrozumiałeś. Chciałem ci przekazać, że najprawdopodbniej nie zamknąłeś jednej z poprzednich formaek i dla tego program nadal działał.
  • Poziom 27  
    Przy przełączaniu formatek poprzednia sie zamykala natomiast pojawiała sie nowa. Problem dotyczył jedynie głównej formatki na której jest zrobiona gra. Z poprzednimi nie było żadnych problemów.