Seite 1 von 1

InputRequester und MessageRequester automatisch schließen

Verfasst: 12.07.2007 06:56
von Martin66119
Guten morgen!

Ich habe mal eine Frage zu InputRequester und MessageRequester.
Kann man die beiden Requester automatisch schließen, sofern nicht nach
z.B. 20 Sekunden der entsprechende Button gedrückt oder keine Eingabe erfolgte wurde.

Danke für die Hilfe
Martin

Verfasst: 12.07.2007 08:40
von jear
Ein Beispiel aus dem englischen Forum

Code: Alles auswählen

;*************************************************************************** 
; Program:         Yet another timed messagebox sample 
; Source:          http://support.microsoft.com/?scid=181934 
; PB version by:   netmaestro 
; Date:            March 21, 2007 
; Applies to:      Anyone who likes timed message boxes 
; Disclaimer:      Hardly any animals were harmed during the creation of 
;                  this software. (one who whined got his feelings hurt) 
;*************************************************************************** 

#MessageBox_Timeout = -1 
  
Global g_hwndTimedOwner 
Global g_bTimedOut 

Procedure MessageBoxTimer(hwnd, uiMsg, idEvent, dwTime) 
  g_bTimedOut = #True 
  If g_hwndTimedOwner 
    EnableWindow_(g_hwndTimedOwner, #True) 
  EndIf 
  PostQuitMessage_(0) 
EndProcedure 

Procedure TimedMessageBox(hwndOwner, pszMessage.s, pszTitle.s, flags, dwTimeout) 
  Protected idTimer.l, iResult.l 
  g_hwndTimedOwner = #Null 
  g_bTimedOut = #False 
  If hwndOwner And IsWindowEnabled_(hwndOwner) 
    g_hwndTimedOwner = hwndOwner 
  EndIf 
  idTimer.l = SetTimer_(#Null, 0, dwTimeout, @MessageBoxTimer()) 
  iResult.l = MessageBox_(hwndOwner, pszMessage, pszTitle, flags) 
  KillTimer_(#Null, idTimer) 
  If g_bTimedOut 
    PeekMessage_(@msg.MSG, #Null, #WM_QUIT, #WM_QUIT, #PM_REMOVE) 
    iResult = #MessageBox_Timeout 
  EndIf 
  ProcedureReturn iResult 
EndProcedure 

; Little test... 

OpenWindow(0,0,0,320,240,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) 
CreateGadgetList(WindowID(0)) 
ButtonGadget(0,100,200,100,25,"Do it") 
Repeat 
  ev = WaitWindowEvent() 
  If ev = #PB_Event_Gadget 
    uiResult = TimedMessageBox(#Null, "Does a triangle have three sides?", "Quiz", #MB_YESNO, 5000) ; // NULL first parameter is important. 
    
    Select uiResult 
      Case #IDYES 
        MessageBox_(#Null, "That's right!", "Result", #MB_OK) 
      Case #IDNO 
        MessageBox_(#Null, "Believe it or not, triangles really do have three sides.", "Result", #MB_OK) 
      Case #MessageBox_Timeout 
        MessageBox_(#Null,  "I sensed some hesitation there. The correct answer is Yes.", "Result", #MB_OK) 
    EndSelect 
  EndIf 
Until ev = #WM_CLOSE 

TimedMessageBox

Verfasst: 12.07.2007 09:41
von Martin66119
Danke für die Hilfe!
Klappt genauso wie ich es mir vorgestellt habe.

Martin