Sign in to follow this  
Followers 0
zamboni128

Custom MsgBox

3 posts in this topic

I'm looking for a way to create a function that will accept labels for 3 buttons and return a value based on the button selected. Can anyone point me to some example code for this? Thanks

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Hi, and wellcome to the forum! :)

Something like this maybe:

#include <GuiConstants.au3>

$Ret = _MyMsgBox("Title", "Prompt", 300, 200, "OK", "Cancel", "Retry", WinGetHandle(""))

ConsoleWrite($Ret)

Func _MyMsgBox($sTitle, $sPrompt, $iWidth, $iHeghit, $sButton1, $sButton2="", $sButton3="", $hParent_hWnd=0)
    Local $iOld_Opt_GOEM, $hMsgBox, $iRet_Value = 0
    Local $iButton1 = -1, $iButton2 = -1, $iButton3 = -1
    
    $iOld_Opt_GOEM = Opt("GuiOnEventMode", 0)
    
    If IsHWnd($hParent_hWnd) Then WinSetState($hParent_hWnd, "", @SW_DISABLE)
    
    $hMsgBox = GUICreate($sTitle, $iWidth, $iHeghit, -1, -1, $WS_CAPTION+$WS_SYSMENU, -1, $hParent_hWnd)
    GUICtrlCreateLabel($sPrompt, 20, 20, $iWidth - 40)
    
    If $sButton2 <> "" And $sButton3 = "" Then
        $iButton1 = GUICtrlCreateButton($sButton1, ($iWidth / 2) - 90, $iHeghit - 40, 60, 20)
        $iButton2 = GUICtrlCreateButton($sButton2, ($iWidth / 2) + 30, $iHeghit - 40, 60, 20)
    ElseIf $sButton3 <> "" Then
        $iButton1 = GUICtrlCreateButton($sButton1, 40, $iHeghit - 40, 60, 20)
        $iButton2 = GUICtrlCreateButton($sButton2, ($iWidth / 2) - 30, $iHeghit - 40, 60, 20)
        $iButton3 = GUICtrlCreateButton($sButton3, $iWidth - 100, $iHeghit - 40, 60, 20)
    Else
        $iButton1 = GUICtrlCreateButton($sButton1, ($iWidth / 2) - 30, $iHeghit - 40, 60, 20)
    EndIf
    
    GUISetState(@SW_SHOW, $hMsgBox)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $iButton1
                $iRet_Value = 1
                ExitLoop
            Case $iButton2
                $iRet_Value = 2
                ExitLoop
            Case $iButton3
                $iRet_Value = 3
                ExitLoop
        EndSwitch
    WEnd
    
    If IsHWnd($hParent_hWnd) Then WinSetState($hParent_hWnd, "", @SW_ENABLE)
    GUIDelete($hMsgBox)
    Opt("GuiOnEventMode", $iOld_Opt_GOEM)
    Return $iRet_Value
EndFunc
Edited by MsCreatoR

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites

Hi, and wellcome to the forum! :)

Something like this maybe:

#include <GuiConstants.au3>

$Ret = _MyMsgBox("Title", "Prompt", 300, 200, "OK", "Cancel", "Retry", WinGetHandle(""))

ConsoleWrite($Ret)

Func _MyMsgBox($sTitle, $sPrompt, $iWidth, $iHeghit, $sButton1, $sButton2="", $sButton3="", $hParent_hWnd=0)
    Local $iOld_Opt_GOEM, $hMsgBox, $iRet_Value = 0
    Local $iButton1 = -1, $iButton2 = -1, $iButton3 = -1
    
    $iOld_Opt_GOEM = Opt("GuiOnEventMode", 0)
    
    If IsHWnd($hParent_hWnd) Then WinSetState($hParent_hWnd, "", @SW_DISABLE)
    
    $hMsgBox = GUICreate($sTitle, $iWidth, $iHeghit, -1, -1, $WS_CAPTION+$WS_SYSMENU, -1, $hParent_hWnd)
    GUICtrlCreateLabel($sPrompt, 20, 20, $iWidth - 40)
    
    If $sButton2 <> "" And $sButton3 = "" Then
        $iButton1 = GUICtrlCreateButton($sButton1, ($iWidth / 2) - 90, $iHeghit - 40, 60, 20)
        $iButton2 = GUICtrlCreateButton($sButton2, ($iWidth / 2) + 30, $iHeghit - 40, 60, 20)
    ElseIf $sButton3 <> "" Then
        $iButton1 = GUICtrlCreateButton($sButton1, 40, $iHeghit - 40, 60, 20)
        $iButton2 = GUICtrlCreateButton($sButton2, ($iWidth / 2) - 30, $iHeghit - 40, 60, 20)
        $iButton3 = GUICtrlCreateButton($sButton3, $iWidth - 100, $iHeghit - 40, 60, 20)
    Else
        $iButton1 = GUICtrlCreateButton($sButton1, ($iWidth / 2) - 30, $iHeghit - 40, 60, 20)
    EndIf
    
    GUISetState(@SW_SHOW, $hMsgBox)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $iButton1
                $iRet_Value = 1
                ExitLoop
            Case $iButton2
                $iRet_Value = 2
                ExitLoop
            Case $iButton3
                $iRet_Value = 3
                ExitLoop
        EndSwitch
    WEnd
    
    If IsHWnd($hParent_hWnd) Then WinSetState($hParent_hWnd, "", @SW_ENABLE)
    GUIDelete($hMsgBox)
    Opt("GuiOnEventMode", $iOld_Opt_GOEM)
    Return $iRet_Value
EndFunc

Thank you very much. The code was simple and straight forward. Even me as a novice can understand the code.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0