Ich bastelte mit gerade einen ErrorRequester(), da der MessageRequester keine Bilder anzeigen kann.
Momentan Windows Only, da ich das Icon des Fensters (in der Titlebar) per SendMessage_ wechsel
und wegen der Konstante #SS_CenterImage, um den Text auch Vertical im Textgadget zu zentrieren.
Kein Sound momentan, aber das könnte dann ja jeder selbst implementieren.
Hier der ErrorRequester()
Code: Alles auswählen
; -----------------------------------------------------------------------------
; --- File : ErrorRequester.pbi
; --- Author : George Bisonte
; --- Version : 1.0
; --- Compiler : PureBasic 5.11 (Windows - x86)
; --- created : 03.05.2013 - 15:39
; -----------------------------------------------------------------------------
; --- Simple Requester to show Errormessages
; -----------------------------------------------------------------------------
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
;
DataSection ; Icons for WindowTitleBar
CompilerIf Not Defined(Icon_FatalError_Start, #PB_Label) ; Datas : Size = 1152 Bytes
Icon_FatalError_Start: ;{ Datas : Size = 1152 Bytes
; Soure : http://www.fatcow.com/free-icons --> 16x16 cancel.png
Data.q $1010000100010000,$0468002000010000,$0028000000160000,$0020000000100000,$0000002000010000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000120000000000
Data.q $0000330000003300,$0000330000003300,$0000330000003300,$0000120000003300,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$3C2C7C8E2D221200,$3A2BFFBE3B2BFFC0,$3A2BFFBE3A2BFFBE
Data.q $3C2CFFBE3B2BFFBE,$00007C8E2D22FFC0,$0000000000001200,$0000000000000000,$2D21120000000000
Data.q $715FFFC33E2F798D,$7C69FFFF7D69FFF9,$7C69FFFF7C69FFFF,$715FFFFF7D69FFFF,$2D21FFC33E2FFFF9
Data.q $000012000000798D,$0000000000000000,$3E2F798D2D211200,$745FFFF66B58FFC2,$725EFFFE725DFFFF
Data.q $725EFFFD735EFFFD,$745FFFFE725DFFFD,$3E2FFFF66B58FFFF,$0000798D2D21FFC2,$2D22000000001200
Data.q $6855FFC23F307C8E,$644EFFFC6C58FFF3,$6854FFF8634DFFF9,$6854FFF96B57FFF9,$644EFFF8634DFFF9
Data.q $6855FFFC6C58FFF9,$2D22FFC23F30FFF3,$3D2D000000007C8E,$6B55FFF26753FFC0,$FFFFFFF76049FFFA
Data.q $563EFFFFFFFFFFFF,$563EFFF65E47FFF6,$FFFFFFFFFFFFFFF6,$6B55FFF76049FFFF,$3D2DFFF26651FFFA
Data.q $3B2B00000000FFC0,$644DFFFC7662FFBF,$FFFFFFF45942FFF6,$FFFFFFFFFFFFFFFF,$FFFFFFF3462CFFFF
Data.q $FFFFFFFFFFFFFFFF,$644EFFF45942FFFF,$3B2CFFFC755FFFF6,$3A2A00000000FFBF,$5F49FFFA8673FFBF
Data.q $806EFFF35A43FFF3,$FFFFFFFFFFFFFFF6,$FFFFFFFFFFFFFFFF,$806EFFFFFFFFFFFF,$5F49FFF35A43FFF6
Data.q $3A2BFFFA816EFFF3,$392900000000FFBF,$5A42FFFB9686FFBF,$4E35FFF15942FFF1,$FFFFFFF2705BFFF0
Data.q $FFFFFFFFFFFFFFFF,$4E35FFF2705BFFFF,$5B43FFF15942FFF0,$392AFFF9907DFFF1,$372700000000FFBF
Data.q $553AFFFBA89AFFBF,$4428FFEE5339FFEF,$FFFFFFFFFFFFFFED,$FFFFFFFFFFFFFFFF,$4428FFFFFFFFFFFF
Data.q $553BFFEE5339FFED,$3828FFFA9D8EFFEF,$372600000000FFBF,$4C31FFF1AB9FFFBF,$FFFFFFEB472BFFED
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFEF6953FFFF,$FFFFFFFFFFFFFFFF,$4C31FFEB472CFFFF,$3727FFF1AB9FFFED
Data.q $382800000000FFBF,$9180FFF1AB9FFFC1,$FFFFFFE83E21FFF4,$725DFFFFFFFFFFFF,$725DFFE84023FFEE
Data.q $FFFFFFFFFFFFFFEE,$9180FFE83E21FFFF,$3828FFF1AB9FFFF4,$3D2D00000000FFC1,$A597FFC33E2E5BC2
Data.q $715BFFF28A77FFEF,$4326FFEE7460FFEE,$4326FFE7482CFFE6,$715BFFEE7460FFE6,$A597FFF28A77FFEE
Data.q $3D2DFFC33E2EFFEF,$0000000000005BC2,$3E2E58C23C2C0000,$8876FFEEA295FFC2,$4023FFE43B1EFFF0
Data.q $4023FFE54125FFE5,$8876FFE43B1EFFE5,$3E2EFFEEA295FFF0,$000058C23C2CFFC2,$0000000000000000
Data.q $3C2C000000000000,$A094FFC33D2F58C2,$B8ADFFF8B9ADFFEF,$B8ADFFF7B9ADFFF7,$A094FFF8B9ADFFF7
Data.q $3C2CFFC33D2FFFEF,$00000000000058C2,$0000000000000000,$0000000000000000,$3F305BC23C2C0000
Data.q $5444FFCE5545FFC4,$5444FFCD5443FFCD,$3F30FFCE5545FFCD,$00005BC23C2CFFC4,$0000000000000000
Data.q $0FE0000000000000,$038041AC07C041AC,$010041AC010041AC,$010041AC010041AC,$010041AC010041AC
Data.q $010041AC010041AC,$010041AC010041AC,$07C041AC038041AC,$000041AC0FE041AC
Icon_FatalError_End: ;}
CompilerEndIf
CompilerIf Not Defined(Icon_WarnError_Start, #PB_Label) ; Datas : Size = 1152 Bytes
Icon_WarnError_Start: ;{ Datas : Size = 1152 Bytes
; Soure : http://www.fatcow.com/free-icons --> 16x16 error.png
Data.q $1010000100010000,$0468002000010000,$0028000000160000,$0020000000100000,$0000002000010000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000330000003300,$0000330000003300,$0000330000003300,$0000330000003300
Data.q $0000330000003300,$0000330000003300,$0000330000003300,$823A330000003300,$7D38FFC87F39FFCA
Data.q $7C39FFC77C38FFC7,$7D38FFC77C39FFC7,$7E38FFC97E38FFC7,$7C39FFC77D38FFC9,$7C38FFC77C39FFC7
Data.q $7F39FFC77D38FFC7,$863BFFCA823AFFC8,$E355FFFFE355FFCD,$E156FFFFE156FFFF,$E556FFFFE256FFFF
Data.q $E955FFFFE955FFFF,$E256FFFFE556FFFF,$E156FFFFE156FFFF,$E355FFFFE355FFFF,$8038FFCD863BFFFF
Data.q $DB52FFE4B87A94C9,$D54DFFFFD54BFFFF,$DC4BFFFFD64DFFFF,$4967FF3F4967FFFF,$D64DFFFFDC4BFF3F
Data.q $D54BFFFFD54DFFFF,$B87AFFFFDB52FFFF,$000094C98038FFE4,$E0A3FFC9823F0000,$CE44FFFFCF40FFFA
Data.q $D644FFFFCF46FFFF,$5C77FF505C77FFFF,$CF46FFFFD644FF50,$CF40FFFFCE44FFFF,$823FFFFAE0A3FFFF
Data.q $000000000000FFC9,$975B44C980360000,$C738FFFFE89EFFD4,$CF3DFFFFC83DFFFF,$BC4BFFE9BC4BFFFF
Data.q $C83DFFFFCF3DFFE9,$E89EFFFFC738FFFF,$8036FFD4975BFFFF,$00000000000044C9,$7E33000000000000
Data.q $D76FFFE6BF90BBC8,$CB34FFFFC332FFFF,$4B64FF3F4B64FFFF,$C332FFFFCB34FF3F,$BF90FFFFD76FFFFF
Data.q $0000BBC87E33FFE6,$0000000000000000,$0000000000000000,$E8C1FFC9823C0000,$C527FFFFCC50FFFD
Data.q $5569FF4C5569FFFF,$CC50FFFFC527FF4C,$823CFFFDE8C1FFFF,$000000000000FFC9,$0000000000000000
Data.q $0000000000000000,$975758C980350000,$CA3AFFFFF3C6FFD5,$5B6CFF545B6CFFFF,$F3C6FFFFCA3AFF54
Data.q $8035FFD59757FFFF,$00000000000058C9,$0000000000000000,$0000000000000000,$7E33000000000000
Data.q $ECA4FFEABE86CFC8,$5D6CFF535D6CFFFF,$BE86FFFFECA4FF53,$0000CFC87E33FFEA,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$8238000000000000,$E5B2FFCB833A0ACA,$C89EFFDEC89EFFFF
Data.q $833AFFFFE5B2FFDE,$00000ACA8238FFCB,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$98536DCA80350000,$F0C1FFFFF0C1FFD7,$8035FFD79853FFFF,$0000000000006DCA
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$7E33000000000000
Data.q $C384FFF1C384CFC7,$0000CFC77E33FFF1,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$8339000000000000,$8433FFCD843321CA,$000021CA8339FFCD
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
Data.q $FFFF000000000000,$000041AC000041AC,$000041AC000041AC,$018041AC018041AC,$07E041AC03C041AC
Data.q $0FF041AC07E041AC,$1FF841AC0FF041AC,$3FFC41AC3FFC41AC,$000041ACFFFF41AC
Icon_WarnError_End: ;}
CompilerEndIf
EndDataSection
;
#PB_ERRORREQUESTER_FAIL = 1 ; Automatic End of Program
#PB_ERRORREQUESTER_WARN = 2 ; User can continue program
;
Procedure ErrorRequester(ErrType, Image, ErrName.s, Text1.s = "", Text2.s = "")
Protected Win, Event, Quit
Protected Icon, FontB, FontN, FontBtn, ww
Protected WinTitle.s, WinSize = 85, y = 10, x1
Protected IG, TName, TText1, TText2, ButtonContinue, ButtonQuit
FontB = LoadFont(#PB_Any, "Verdana", 12, #PB_Font_Bold)
FontN = LoadFont(#PB_Any, "Verdana", 8)
FontBtn = LoadFont(#PB_Any, "Verdana", 9, #PB_Font_Bold)
If ErrType = #PB_ERRORREQUESTER_WARN
Icon = CatchImage(#PB_Any, ?Icon_WarnError_Start)
WinTitle = "Warning"
Else
Icon = CatchImage(#PB_Any, ?Icon_FatalError_Start)
WinTitle = "Fatal Error"
EndIf
If IsImage(Image) : WinSize + ImageHeight(Image) + 5 : EndIf
If Text1 <> "" : WinSize + 18 : EndIf
If Text2 <> "" : WinSize + 18 : EndIf
Win = OpenWindow(#PB_Any, 0, 0, 300, WinSize, WinTitle, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If IsImage(Icon) : SendMessage_(WindowID(Win), #WM_SETICON, #False, ImageID(Icon)) : EndIf
ww = WindowWidth(Win)
If IsImage(Image)
IG = ImageGadget(#PB_Any, ((ww/2) - (ImageWidth(Image)/2)), y, ImageWidth(Image), ImageHeight(Image), ImageID(Image))
y + GadgetHeight(IG) + 5
EndIf
TName = TextGadget(#PB_Any, 0, y, ww, 25, ErrName, #PB_Text_Center|#SS_CENTERIMAGE) : y + 30
SetGadgetFont(TName, FontID(FontB))
If Text1 <> ""
TText1 = TextGadget(#PB_Any, 0, y, ww, 18, Text1, #PB_Text_Center|#SS_CENTERIMAGE) : y + GadgetHeight(TText1)
SetGadgetFont(TText1, FontID(FontN))
EndIf
If Text2 <> ""
TText2 = TextGadget(#PB_Any, 0, y, ww, 18, Text2, #PB_Text_Center|#SS_CENTERIMAGE) : y + GadgetHeight(TText2)
SetGadgetFont(TText2, FontID(FontN))
EndIf
y + 10
If ErrType = #PB_ERRORREQUESTER_WARN
ButtonQuit = ButtonGadget(#PB_Any, 10, y, 130, 25, "Quit")
ButtonContinue = ButtonGadget(#PB_Any, ww - 10 - 130, y, 130, 25, "Continue") : y + GadgetHeight(ButtonContinue)
SetGadgetFont(ButtonContinue, FontID(FontBtn))
Else
ButtonQuit = ButtonGadget(#PB_Any, ((ww/2) - (150/2)), y, 150, 25, "Quit") : y + GadgetHeight(ButtonQuit)
EndIf
SetGadgetFont(ButtonQuit, FontID(FontBtn))
StickyWindow(Win, #True)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
If Event = #PB_Event_Gadget
If EventGadget() = ButtonContinue
Quit = 2
Else
Quit = 1
EndIf
EndIf
Until Quit > 0
CloseWindow(Win)
If IsFont(FontB) : FreeFont(FontB) : EndIf
If IsFont(FontN) : FreeFont(FontN) : EndIf
If IsFont(FontBtn) : FreeFont(FontBtn) : EndIf
If IsImage(Icon) : FreeImage(Icon) : EndIf
If Quit = 2
ProcedureReturn #True
Else
End
EndIf
EndProcedure
;
; -----------------------------------------------------------------------------
; --- Example / Demo
; -----------------------------------------------------------------------------
CompilerIf #PB_Compiler_IsMainFile
UsePNGImageDecoder()
Define Im
Im = LoadImage(#PB_Any, "D:\FCI\ethernet-card-Vista-icon128x128.png") ; <-- use your own Image
ErrorRequester(#PB_ERRORREQUESTER_WARN, im, "Network Error", "No TCP/IP stack found !", "Click on Continue")
ErrorRequester(#PB_ERRORREQUESTER_FAIL, im, "Network Error", "No TCP/IP stack found !", "any network adapter installed ?")
CompilerEndIf