Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: weiter Fenster
Stefan Müller
Datum:16.09.02 09:52 Antwortenals Email verschicken (panapaul@web.de) 


Hallo!

Ich habe ein Hauptfenster laufen und möchte nun ein weiteres Fenster öffnen und dort den Inhalt des Hauptfenster hinein kopieren. Leider kann ich dem neuen Fenster keinen eigenen Style zuweisen und ich habe Probleme dieses Fenster zu aktivieren und den Inhalt hinein zu schreiben. Jemand eine Idee?

Stefan


Stefan Schnell
Datum:16.09.02 10:23 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Stefan,
folgendes Codefragment bietet Dir die Möglichkeit mehrere Fenster mit unterschiedlichen Stilen in einem Programm zu öffnen, und diese dann auch entsprechend zu aktivieren:

Declare hWin1%, hWin2%

WindowStyle 31
hWin1% = @Create("Window", %hWnd, "Fenster1", 0, 0, 640, 480)
WaitKey

WindowStyle 512
hWin2% = @Create("Window", %hWnd, "Fenster2", 100, 100, 640, 480)
WaitKey

@SetActiveWindow(hWin1%)
WaitKey

@SetActiveWindow(hWin2%)
WaitKey
End

Die Funktion WaitKey habe ich nur eingefügt, zum besseren Verständnis des Programmablaufes.
Hoffe konnte Dir etwas weiter helfen.
Tschüss
Stefan


Stefan Müller
Datum:16.09.02 13:03 Antwortenals Email verschicken (panapaul@web.de) 


Hallo!
Erst einmal vielen Danke, aber:
Declare hwin1%, hwin2%

Windowstyle 31
hwin1% = @createwindow(%HWnd,"Fenster1",0,0,640,480)
waitkey

windowstyle 512
hwin2% = @createwindow(%HWnd, "Fenster2",0,0,640,480)
waitkey

@setactivewindow(hwin1%)
drawtext 50,50, "Inhalt 1. Fenster"
waitkey

@setactivewindow(hwin2%)
drawtext 100,100, "Inhalt 2. Fenster"
waitkey

Der Text wird immer in das Handle Hwnd geschrieben. Wie kann ich das ändern???

Stefan



Stefan Schnell
Datum:16.09.02 13:20 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Stefan,
so funktnioniert es:

Declare hwin1%, hwin2%

Windowstyle 31
hwin1% = @createwindow(%HWnd,"Fenster1",0,0,640,480)
waitkey

windowstyle 512
hwin2% = @createwindow(%HWnd, "Fenster2",100,100,640,480)
waitkey

@setactivewindow(hwin1%)
@createtext(hwin1%, "Inhalt 1. Fenster", 50, 50, 150, 24)
waitkey

@setactivewindow(hwin2%)
@createtext(hwin2%, "Inhalt 2. Fenster", 100, 100, 150, 24)
waitkey

End

Tschüss
Stefan



Stefan Schnell
Datum:16.09.02 13:28 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Stefan,
noch ein kleiner Nachtrag: Der Befehl für SetActiveWindow muss nicht sein, es funktioniert auch ohne.
Tschüss
Stefan



Frank Abbing
Datum:16.09.02 14:02 Antwortenals Email verschicken  


Hallo,

schau mal in der Profan-Hilfe unter StartPaint / EndPaint nach, das ist das was du suchst.

Gruß, Frank


Stefan Müller
Datum:16.09.02 15:17 Antwortenals Email verschicken (panapaul@web.de) 


Hallo!

Also Startpaint und Endpaint hat "leichte" Sorgen, wenn man ein beliebiges anderes Fenster darüber schiebt. Dann ist der Inhalt nämlich verschwunden. Deshalb ist die Variante mit Createtext doch die bessere Alternative. Trotzdem noch mal Danke an alle, die sich bemüht haben. :-)
Besonders an Stefan, weil seine Ideen mich auf den richten Pfad der Tugend brachten.
Stefan


Thomas Ungerböck
Datum: 16.09.02 18:47 Antwortenals Email verschicken (Kerzenlicht@chello.at) 


Hallo
Für diese Sorgen gibts SetAutoPaint und %WmPaint.
Hier ein kleiner Quellcode zum Testen:

Proc Zeichnen
  Startpaint Fenster1&
	  Cls 7286213
    UseFont "Arial",20,10,0,0,0
    TextColor RGB(103,106,152),-1
    Drawtext 100,100,"Fenster1"
		Drawtext 100,130,"Weiter mit Enter"
		Drawtext 100,160,"Ende mit Esc."
  Endpaint
Endproc

Proc Unterprogramm
SetAutoPaint 1
SettrueColor 1
  Declare Fenster1&
Fenster1&=@Createwindow(%Hwnd,"Untergeordnetes Fenster",50,50,500,500)
Zeichnen
While 1
Getmessage
  Sleep 10
  If %WmPaint
    Zeichnen %Hwnd,1,"Arial",7286213
  Elseif @Equ(&Wparam,27)
    End
  Elseif @Equ(&Wparam,13)
    Break
  Endif
Wend
SetAutoPaint 2
@DestroyWindow(Fenster1&)
Endproc

Windowstyle 32
Windowtitle "Hauptfenster"
Window 0,0-800,600

Declare Fenster1&

Cls 7286028
    UseFont "Courier",20,10,0,0,0
    TextColor RGB(103,106,152),-1
    Drawtext 100,100,"Hauptfenster"
		Drawtext 100,130,"Weiter mit Enter"
		Drawtext 100,160,"Ende mit Esc."
		
While 1
Waitinput
  If @Equ(%Scankey,27)
    End
  Elseif @Equ(%Scankey,13)
	  Sleep 500
    Unterprogramm
  Endif
Wend

Natürlich kannst du in das Fenster auch noch hineinzeichnen oder ein Bild anzeigen.
Gruß Thomas



 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!