Seite 2 von 4

Verfasst: 31.03.2007 13:27
von Kaeru Gaman
mit PB kann man halt keine echten dialoge erstellen.

also, ich weiß nicht, ob es überhaupt geht mit irgendeinem Bit der Flags.

aber: du könntest ein icon erzeugen, dass nur aus transparenz besteht...

Verfasst: 31.03.2007 13:29
von Jilocasin
Dann ist aber dennoch immer ein Icon "vorhanden", bzw. der WindowText steht dann etwas merkwürdig "weit rechts" da :lol:

Verfasst: 31.03.2007 15:46
von Fluid Byte

Code: Alles auswählen

Procedure DialogBox(WinNUM.w,Width.w,Height.w,Caption.s,ParentID.l)
    DisableWindow(ParentID,1)

    dwStyle = #WS_SYSMENU | #WS_CAPTION | #WS_VISIBLE | #PB_Window_ScreenCentered

    Result = OpenWindow(WinNUM,X,Y,Width,Height,Caption,dwStyle,WindowID(ParentID))

    hMenuSystem = GetSystemMenu_(Result,0)

    RemoveMenu_(hMenuSystem,#SC_RESTORE,0)
    RemoveMenu_(hMenuSystem,#SC_SIZE,0)
    RemoveMenu_(hMenuSystem,#SC_MINIMIZE,0)
    RemoveMenu_(hMenuSystem,#SC_MAXIMIZE,0)
    RemoveMenu_(hMenuSystem,0,0)

    SetWindowLong_(Result,#GWL_EXSTYLE,#WS_EX_DLGMODALFRAME)
    
    ProcedureReturn Result
EndProcedure

Ipsum$ + "Lorem ipsum aliquam erat volutpat wisi enim ad minim veniam, quis nostrud " 
Ipsum$ + "exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo."

OpenWindow(0,0,0,320,240,"Parent Window",#WS_OVERLAPPEDWINDOW | 1)

DialogBox(101,200,120,"Dialog Test",(0))
CreateGadgetList(WindowID(101))
TextGadget(0,10,10,180,50,Ipsum$)
ButtonGadget(1,60,80,80,24,"OK",#BS_DEFPUSHBUTTON)
HideWindow(101,0)

Repeat
	EventID = WaitWindowEvent()

	If EventID = #PB_Event_Gadget And EventGadget() = 1
		DisableWindow(0,0)
		CloseWindow(101)
	EndIf
Until EventID = 16

Verfasst: 31.03.2007 15:53
von Kaeru Gaman
funktioniert unter 2K...

ist aber dochn ziemlicher aufwand...

...und ein bisschen unglücklich, dass man den click in der eventschleife außerhalb abfragt und das parent manuell enablen muss...

...eventuell alles in die proc packen dann?

ja ok, war ja nich thema, ging ja nur darum, wie man das macht ohne icon.

Verfasst: 31.03.2007 15:57
von edel
Du kannst aber auch 'nen Toolwindow benutzen, die Titlebar ist allerdings etwas kleiner.

Code: Alles auswählen

  Macro AddWindowStyleEX(hwnd,new_style) 
    SetWindowLong_(hwnd,-20,GetWindowLong_(hwnd,-20)|new_style)
    SetWindowPos_(hwnd,0,0,0,0,0,#SWP_FRAMECHANGED|#SWP_NOMOVE|#SWP_NOSIZE)
  EndMacro

  hwnd = OpenWindow(0,0,0,640,480,"leer")
  
  AddWindowStyleEX(hwnd,#WS_EX_TOOLWINDOW)
  
  Repeat : Until WaitWindowEvent() = 16

Verfasst: 31.03.2007 16:08
von Kaeru Gaman
ja, cool @edel :allright:

...das ist der klassische dialog-frame.

Verfasst: 31.03.2007 16:31
von Andreas
Kaeru Gaman hat geschrieben:ja, cool @edel :allright:

...das ist der klassische dialog-frame.
Das ist wohl eher ein klassisches Toolwindow, aber nicht schlecht
:wink:

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"Parent Window")
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_DLGMODALFRAME)

;#################################
;benötigt SKINWIN-LIB
;#################################
ShowCloseButton(WindowID(0),#True)
;#################################

Repeat
   EventID = WaitWindowEvent()
Until EventID = 16

Verfasst: 31.03.2007 16:34
von Kaeru Gaman
Andreas hat geschrieben:

Code: Alles auswählen

;benötigt SKINWIN-LIB
MÖÖÖÖP - Hoëcker, sie sind raus.

Verfasst: 31.03.2007 16:44
von edel
Warum das denn ?!

ersetze

Code: Alles auswählen

ShowCloseButton(WindowID(0),#True)
mit

Code: Alles auswählen

style = GetWindowLong_(WindowID(0),#GWL_STYLE)
SetWindowLong_(WindowID(0),#GWL_STYLE,style|#WS_SYSMENU)
SetWindowPos_(WindowID(0),0,0,0,0,0,#SWP_FRAMECHANGED|#SWP_NOMOVE|#SWP_NOSIZE)

Verfasst: 31.03.2007 17:03
von E-P-S
Hui, klasse...vielen Dank, klappt super.