nach nun etlichen Tools mit PureBasic habe ich nun leider ein kleines Problem, das ich nicht lösen kann, obwohl es sehr einfach erscheint. Bestimmt stehe ich nur wieder auf dem Schlauch. Hier als mein Problem. Ich hab den Code aufs nötige reduziert:
Code: Alles auswählen
#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
Repeat
uiResult = TimedMessageBox(#Null, "Test", "Test", #MB_OK+#MB_ICONSTOP, 5000)
ForEver
Edit: Achja, der Grund-Code ist nicht von mir!