Seite 1 von 1

Fenster im Fenster Öffnen und schließen

Verfasst: 21.08.2008 23:08
von FrEeKsTeR
so ich bin's wieder

jetzt bin ich soweit das mein chat wunderbar funktioniert.
nun möchte ich einige Smileys einbauen.
hab ja in einer Antwort meiner Letzten Frage gesehen wie ich
das in meinen Code einbau.

mein neues Problem ist jetzt ich möchte mir wenn ich eine Schaltfläche Drücke ein neues Fenster Öffnen wo dann die ganzen Smileys angezeigt Werden. soweit hab ich das auch hinbekommen allerdings wenn ich das Fenster Jetzt Schließe, Schließt sich nicht nur das Smiley Fenster sondern der ganze chat wie krig ich also ein fenster auf button druck geöffnet und geschlossen ohne das sich der ganze Chat schließt, mit dem ich dann am besten auch noch auf das eigendliche fenster zugreifen kann? sprich wenn ich nen smiley anklicke zb das er den smiley text dann ans ende des string gadgets des ersten fensters sendet *g* ich glaube so langsam ist es wohl mal zeit nen bissl code zu Posten zur besseren verständniss*g*

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Fehler", "Konnte Netzwerk nicht aufbauen")
Else
  InitKeyboard()
EndIf
#IDM_EnterKey = 101
Enumeration
  #Window_0
  #Window_1
  #Window_2
EndEnumeration

Enumeration
  #ScrollBar_0
  #Smiley_0
  #Image_0
  #String_0
  #Button_0
  #Listview_1
  #Button_1
  #Listview_0
  #String_1
  #Text_0
  #Button_3
  #Tree_0
  #Button_4
  #Button_5
EndEnumeration

Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
  Image0:
  IncludeBinary "H:\MyChat\Client\bannerreflex1.bmp"
EndDataSection

If OpenWindow(#Window_1, 216, 0, 280, 160, "Nickname",  #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(#Window_1))
    StringGadget(#String_1, 30, 70, 210, 20, "")
    TextGadget(#Text_0, 110, 50, 50, 20, "Nickname")
    ButtonGadget(#Button_3, 70, 100, 130, 40, "Login")
    AddKeyboardShortcut(#Window_1 , #PB_Shortcut_Return, #Text_0)
    Repeat
      lEventID = WaitWindowEvent()
      If lEventID = #PB_Event_Menu Or EventGadget() = #Button_3 
          name$ = GetGadgetText(#String_1)
          If name$ <> ""
            lquit = 1
          Else
            MessageRequester("Fehler", "Bitte Nickname eingeben")
            EndIf
        EndIf
      If lEventID = #PB_Event_CloseWindow 
        End
      EndIf
    Until lquit = 1
    CloseWindow(#Window_1)
  EndIf
  If OpenWindow(#Window_0, 220, 0, 596, 486, "Broadway Radio Chat", #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 0, 0, 600, 133, Image0)
      StringGadget(#String_0, 10, 420, 410, 20, "")
      ButtonGadget(#Button_0, 430, 420, 70, 20, "Senden")
      ButtonGadget(#Smiley_0, 10, 430, 70, 20, "Smileys")
      ButtonGadget(#Button_1, 510, 420, 80, 20, "Schließen")
      WebGadget(#Listview_1, 160, 140, 430, 270, "")
      ListViewGadget(#Listview_0, 10, 140, 150, 270)
      AddKeyboardShortcut(#Window_0 , #PB_Shortcut_Return, #String_0) 
      SetWindowColor(#Window_0, RGB($CC,$00,$00)) 
      SetGadgetColor(#Listview_1, #PB_Gadget_BackColor, RGB($99,$99,$99))
      SetGadgetColor(#Listview_0, #PB_Gadget_BackColor, RGB($99,$00,$00))
      SetGadgetColor(#String_0, #PB_Gadget_BackColor, RGB($55,$55,$55))
      Smiley1$ = "<img src='http://www.purebasic.fr/german/images/smiles/icon_biggrin.gif' alt='Very happy' />" 
      Smiley2$ = "<img src='http://www.rubstudent.de/RSV/Forum/images/smilies/new/banana.gif' alt='Dancing Banana' />" 
      
      HTML1$ = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>" + #CR$ 
      HTML1$ + "<html xmlns='http://www.w3.org/1999/xhtml'>" + #CR$ 
      HTML1$ + "<head>" + #CR$ 
      HTML1$ + "<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />" 
      HTML1$ + "<title>PureChat v0.1</title>" + #CR$ 
      HTML1$ + "<style type='text/css'>" + #CR$ 
      HTML1$ + "   body {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;}" + #CR$ 
      HTML1$ + "</style>" + #CR$ 
      HTML1$ + "</head>" + #CR$ 
      HTML1$ + "<body bgcolor="+Chr(34)+"#676767"+Chr(34)+"onload='javascript: window.scrollTo(0,10000);'>" + #CR$ 
      
      ChatLog$ = "" + #CR$ 
      
      HTML2$ + "</body>" + #CR$ 
      HTML2$ + "</html>" 
      SetGadgetItemText(#Listview_1,#PB_Web_HtmlCode,HTML1$ + ChatLog$ + HTML2$) 
      SetActiveGadget(#String_0)
    Port = 6832
    authpack$ = "rb9256"
      ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
      If ConnectionID = 0
        MessageRequester("Fehler", "Server Verbindsung Fehlgeschlagen")
        End
      Else 
        
        SendNetworkString(ConnectionID, authpack$+"\"+name$)
        Repeat
          NEventID= NetworkClientEvent(ConnectionID)
          EventID = WaitWindowEvent() 
          If EventGadget() = #Smiley_0
    If OpenWindow(#Window_2, 216, 0, 390, 320, "Smiley List",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      If CreateGadgetList(WindowID(#Window_2))
        ScrollBarGadget(#ScrollBar_0, 380, 10, 20, 350, 0, 10, 3, #PB_ScrollBar_Vertical)
        ButtonGadget(#Button_4, 10, 280, 170, 30, "Benutzen")
        ButtonGadget(#Button_5, 190, 280, 170, 30, "Schließen")
Repeat
SmEventID = WaitWindowEvent()
Until SmEventId = #PB_Event_CloseWindow
          EndIf
          EndIf
          EndIf
          If EventID = #PB_Event_Menu Or EventGadget() = #Button_0 
            Text$ = GetGadgetText(#String_0)
            If Text$ <> "" 
            SendNetworkString(ConnectionID, name$+":=> "+Text$+Chr(160))
            SetGadgetText(#String_0, "") 
          EndIf
          EndIf
          If EventGadget() = #Button_1
            Quit = 1
          EndIf
          If NEventID = #PB_NetworkEvent_Data
          *Buffer = AllocateMemory(1000)
          ZeroMemory_(*Buffer,1000)
          ReceiveNetworkData(ConnectionID, *Buffer, 1000)
          message$ = PeekS(*Buffer,1000)
          bufmes = CountString(message$, Chr(160))
          For c=1 To bufmes
          onestring$ = StringField(message$, c, Chr(160))
          String$ = StringField(onestring$, 1, "/")
          String2$ = StringField(onestring$, 1, ":")
          If String$ = "clientlist"
          ClearGadgetItemList(#Listview_0)
          String$ = StringField(onestring$, 2, "/")
          ulc = CountString(String$,",")
          ClearGadgetItemList(#Listview_0) 
          For k=1 To ulc
            Stringu$ = StringField(String$, k, ",")
            SendMessage_(x,#EM_SETTARGETDEVICE, 0, 0)
            AddGadgetItem(#Listview_0, -1, Stringu$)
          Next
        ElseIf String2$ = name$
          strl = Len(onestring$)
          namel = Len(name$)
          strl - namel
          strl - 1
          string3$ = Right(onestring$,strl)
          string3$ = ReplaceString(string3$,"<","<")
          string3$ = ReplaceString(string3$,">",">")
          string3$ = ReplaceString(string3$,":D",Smiley1$) 
          string3$ = ReplaceString(string3$,":banana:",Smiley2$) 
          ChatLog$ + string3$ + "<br />" + #CR$
          SetGadgetItemText(#Listview_1,#PB_Web_HtmlCode,HTML1$+ChatLog$+HTML2$)
          ZeroMemory_(*Buffer,1000)
        Else
          string3$ = ReplaceString(onestring$,"<","<")
          string3$ = ReplaceString(onestring$,">",">")
          string3$ = ReplaceString(onestring$,":D",Smiley1$) 
          string3$ = ReplaceString(onestring$,":banana:",Smiley2$) 
          ChatLog$ +  string3$ + "<br />" + #CR$ 
          SetGadgetItemText(#Listview_1,#PB_Web_HtmlCode,HTML1$+ChatLog$+HTML2$)
          ZeroMemory_(*Buffer,1000)
        EndIf
      Next
      SetActiveGadget(#String_0)
    EndIf
    If EventID = #PB_Event_SizeWindow 
      ResizeGadget(#Listview_1,160, 140,WindowWidth(#Window_0)-160,WindowHeight(#Window_0)-205) 
      ResizeGadget(#String_0,0,WindowHeight(#Window_0)-30,WindowWidth(#Window_0)-180,25)
      ResizeGadget(#Listview_0,10, 140,150,WindowHeight(#Window_0)-205)
      imagesize = WindowWidth(#Window_0)-595
      ResizeGadget(#Image_0,0+imagesize/2,0,600,133)
      ResizeGadget(#Button_0, WindowWidth(#Window_0)-166, WindowHeight(#Window_0)-26, 70, 20)
      ResizeGadget(#Button_1, WindowWidth(#Window_0)-86 , WindowHeight(#Window_0)-26, 80, 20)
      ResizeGadget(#Smiley_0, 10, WindowHeight(#Window_0)-56, 70, 20)
      
      EndIf 
        If EventID = #PB_Event_CloseWindow 
          Quit = 1
        EndIf
      Until Quit=1
    EndIf
  EndIf
EndIf
EndIf
über aufräum, Verbesserungs vorschläge und vor allem antworten
würd ich mich natürlich sehr freuen *g*

mfg FrEeKsTeR

Verfasst: 21.08.2008 23:18
von Kaeru Gaman
du musst die Ereignisse nach zuständigem Fenster trennen...


natürlich ist beiden #PB_Event_CloseWindow, aber aber das betreffende EventWindow() unterscheidet sich.

hier ein Bleistift:
http://www.purebasic.fr/english/viewtop ... 031#175031

Re: Fenster im Fenster Öffnen und schließen

Verfasst: 21.08.2008 23:19
von Kiffi
Du musst bei #PB_Event_CloseWindow auch ermitteln, in welchem
Fenster das Event aufgetreten ist. Das kannst Du mit EventWindow()
herausfinden. Wenn es im Hauptfenster auftritt, kannst Du das Programm
beenden (Quit = 1); ansonsten sollten ja anscheinend die anderen
Fenster lediglich geschlossen werden, oder?

Ungetestet und ohne den restlichen Code gelesen zu haben:

Code: Alles auswählen

[...]
        If EventID = #PB_Event_CloseWindow
         If EventWindow()=#Window_0 ; Hauptfenster
          Quit = 1 ; Programm beenden
         ElseIf EventWindow()=#Window_1 ; Nickname-Fenster
           ; irgendwas
         ElseIf EventWindow()=#Window_2 ; Smiley-List
          CloseWindow(#Window_2)
        EndIf
      Until Quit=1 
[...]
Grüße .... Kiffi