B3D+B+ von ??? |
Hi, guckts euch halt mal an :) Den Code hab ich mit Sucos hilfe geschrieben! [code:1:87fa6d9d82]#------ Userlib *.decls .lib "User32.dll" FindWindow%(class$, fenster$):"FindWindowA" SetWindowRgn%(hwnd,hrgn,redraw) GetActiveWindow%() SetParent%(hWndChild,hWndNewParent) SetWindowPos%(hWnd, hWndINsertAfter,x,y,cx,cy,flags) .lib "Gdi32.dll" CreateRectRgn%(left,top,right,bottom) #------ Blitz Plus Source ; ; Constants ; Const windowwidth = 116 Const windowheight = 200 Const windowtitle$ = "Modeller" Const dummy_m = 1 Const beenden_m = 19 ; ; Globals ; Global window = CreateWindow(windowtitle$,(ClientWidth(Desktop())-windowwidth)/2,(ClientHeight(Desktop())-windowheight)/2,windowwidth,windowheight,Desktop(),1) Global menu = WindowMenu(window) Global datei_m = CreateMenu("&Datei",dummy_m,menu) Global beenden__m = CreateMenu("&Beenden Alt+F4",beenden_m,datei_m) Global button = CreateButton("Farbe",5,130,100,30,window) ; ; Fuctions ; Function resize(hwnd,xwd,yhg) i=1 j=1 Repeat i=i+1 SetGadgetShape hwnd,0,0,i,j Until ClientWidth(hwnd) = xwd Repeat j=j+1 SetGadgetShape hwnd,0,0,i,j Until ClientHeight(hwnd) = yhg Notify GadgetWidth(hwnd)+" x "+GadgetHeight(hwnd) End Function Function writemessage(name,id,evdata,source,x,y) Repeat Until FileType("comunicate.tmp") = 0 file = WriteFile("comunicate.tmp") WriteInt file,name WriteInt file,id WriteInt file,evdata WriteInt file,source WriteInt file,x WriteInt file,y CloseFile file End Function ; ; Startup ; UpdateWindowMenu window MainHwnd = GetActiveWindow() ExecFile("Viewport.exe") tmp=MilliSecs() Repeat Until MilliSecs()-tmp > 500 Repeat vwprt = FindWindow("Blitz Runtime Class","Viewport") If WaitEvent() = $803 Then End Until vwprt <> 0 SetParent(vwprt,mainhwnd) SetWindowPos(vwprt,0,2,-25,ClientWidth(window),ClientHeight(window)-20,0) ActivateWindow window SetGadgetLayout button,1,0,1,0 ; ; Mainloop ; Repeat event = WaitEvent() Select event Case $401 Select EventSource() Case button RequestColor(255,255,255) writemessage(event,EventID(),RequestedRed(),1,RequestedGreen(),RequestedBlue()) ; Case ; writemessage(event,EventID(),EventData(),EventSource(),EventX(),EventY()) End Select Case $803 Select EventSource() Case window writemessage(event,EventID(),EventData(),EventSource(),EventX(),EventY()) End End Select Case $1001 Select EventData() Case beenden_m writemessage($803,0,0,0,0,0) End End Select End Select Forever #------ Blitz 3D Source ; ; Constants ; Const screenwidth = 160 Const screenheight = 120 Const colormode = 32 Graphics3D screenwidth,screenheight,colormode,2 AppTitle("Viewport") SetBuffer BackBuffer() ; ; Globals ; ; GUI Global eventname Global eventid Global eventdata Global eventsource Global eventx Global eventy ; 3D Global camera = CreateCamera() Global light = CreateLight() Global cube=CreateCube() ; ; Startup ; CameraViewport camera,0,0,100,100 PositionEntity light,-3,0,3 PositionEntity camera,-3,5,-1 ScaleEntity cube,2,2,2 PointEntity camera,cube hwnd = GetActiveWindow() result = CreateRectRgn(3,30,103,130) SetWindowRgn(hwnd,result,1) ; ; Mainloop ; Repeat file = ReadFile("comunicate.tmp") If file <> 0 Then eventname = ReadInt(file) eventid = ReadInt(file) eventdata = ReadInt(file) eventsource = ReadInt(file) eventx = ReadInt(file) eventy = ReadInt(file) CloseFile(file) DeleteFile "comunicate.tmp" Select eventname Case $401 Select eventsource Case 1 EntityColor cube,eventdata,eventx,eventy End Select End Select End If TurnEntity cube,0.2,1,2 UpdateWorld RenderWorld Flip Until FindWindow("BlitzMax_Window_Class","Modeller") = 0 End[/code:1:87fa6d9d82] |
von / |
Warum hast du es letztendlich doch mit File Management gelößt und nicht mit einer TCP oder UDP Netzwerkverbindung. Ist doch alles ein Computer, hättest doch nur einen Port öffnen müssen. Aber trotzdem, gefällt mir! |
von |
Tja ich hab gesehen, das File auch ganz schnell und gut geht :) Ausserdem wollt ich nicht extra die Netzwerk befehle lernen und das wäre auch n bisschen komplizierte es über UDP/TCP zu machen. File is auch ganz gut :D |
von ??? |
Die Kommunikation zwischen 2 Programmen ist Lokal am besten per Netzwerk zu lösen. UDP ist absolutes muss, TCP ist wegen der "Wartezeit" sowiso nicht zu empfehlen, so wäre kein Realtime möglich. Unter Linux werden viele Sachen so gelösst... |
von ??? |
Wie gesagt, ich hab File lieber und wer UDP möchte, der kanns doch umcoden. Und am besten dann hier posten! Mfg Skate |
von ??? |
Könntest du noch bitte einen sprechenden Topic verwenden und beschreiben was das macht? |
von ??? |
[quote:b2f1c4ce58="Skateboarder"]Wie gesagt, ich hab File lieber und wer UDP möchte, der kanns doch umcoden. Und am besten dann hier posten! Mfg Skate[/quote:b2f1c4ce58] Naja, jetzt werden wir ein wenig OffT... File ist sau lahm und absolut für Realtime ungeeignet, da die ganze Zeit auf die Festplatte zu gegriffen wird, Faktor 100 bis 1000 mal langsamer als über das Netzwerkprotokoll UDP... Zumal ist es auch einfacher, da du auch so über das Netzwerk Verbindungen aufbauen kannst :) |
von ??? |
[quote:33928c50d1="BIG BUG"]Könntest du noch bitte einen sprechenden Topic verwenden und beschreiben was das macht?[/quote:33928c50d1] Man hat einfach ein 3D Fenster in einem B+ GUI Window! Eignet sich für Modeller, da man dann nicht in B3D extra eine GUI schreiben muss(Stimmts ST? ;)) @ ping: Ähh, ich hab leider derzeit keine Zeit das auf UDP umzuschreiben, wäre aber nett, wenn das einer machen würde! Mfg Skate |
von ??? |
Hy Und wie sieht es mit der Geschwindigkeit bei Systemvariablen aus? die sind kein UDP und kein File Gruss |