Jump to content
Melba23

How to make Toast - New version 2 Aug 18

Recommended Posts

When using toast in a winpe enviroment is it possible to move the toast away from the top left?

Share this post


Link to post
Share on other sites

myk3,

The Toast will always emerge from the systray/notification area. If that is top left then the Toast appears at top left. :)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

myk3,

The Toast will always emerge from the systray/notification area. If that is top left then the Toast appears at top left. ;)

M23

I like Toast so much I find I'm using it in multiple apps. I'm wondering if you had any suggestions how to detect if there's already a Toast window running and maybe a way to choose another location? I think I can kludge the location but as far as I can see the Toast window just uses generic AutoIt window class. Is there a trick for detecting if a Toast window is already open?

Edit: I just added an option and hacked something on to slide out from left center of desktop. That way if the user already has a startup that uses Toast by the tray the overlap can be avoided. I used optional params tacked on so it shouldn't break old code. :)

Edited by MilesAhead

Share this post


Link to post
Share on other sites

I got rid of the hard-wired to left center screen and now have a $tDir param added to Toast_Show and Toast_Locate.

;new header
Func _Toast_Show($vIcon, $sTitle, $sMessage, $iDelay = 0, $fWait = True, $fRaw = False, $tDir = 0)

;changed call to toast locate to use $tDir
Local $aToast_Data = _Toast_Locate($iToast_Width, $iToast_Height, $tDir)

and changes I made to Toast_locate

Func _Toast_Locate($iToast_Width, $iToast_Height, $tDir = 0)

    ; Define return array
    Local $aToast_Data[3]


    ; Begin MilesAhead Mod

    Local $l, $t, $r, $b
    _GetDesktopWorkArea($l,$t,$r,$b)
    If $tDir = 1 Then ; pop out from left center instead of tray
        $aToast_Data[0] = $l
        $aToast_Data[1] = Round($b / 2)
        $aToast_Data[2] = 0x00040001 ; $AW_SLIDE_IN_LEFT
        $iToast_Move = 0x00050002 ; $AW_SLIDE_OUT_LEFT
        Return $aToast_Data
    ElseIf $tDir = 2 Then
        $aToast_Data[0] = Round($r / 2) - Round($iToast_Width / 2)
        $aToast_Data[1] = $t
        $aToast_Data[2] = 0x00040004 ; $AW_SLIDE_IN_TOP
        $iToast_Move = 0x00050008 ; $AW_SLIDE_OUT_TOP
        Return $aToast_Data
    ElseIf $tDir = 3 Then
        $aToast_Data[0] = $r - $iToast_Width
        $aToast_Data[1] = Round($b / 2) - Round($iToast_Height / 2)
        $aToast_Data[2] = 0x00040002 ; $AW_SLIDE_IN_RIGHT
        $iToast_Move = 0x00050001 ; $AW_SLIDE_OUT_RIGHT
        Return $aToast_Data
    ElseIf $tDir = 4 Then
        $aToast_Data[0] = Round($r / 2) - Round($iToast_Width / 2)
        $aToast_Data[1] = $b - $iToast_Height
        $aToast_Data[2] = 0x00040008 ; $AW_SLIDE_IN_BOTTOM
        $iToast_Move = 0x00050004 ; $AW_SLIDE_OUT_BOTTOM
        Return $aToast_Data
    EndIf

   ; End MilesAhead Mod

    ; Find systray
    Local $iPrevMode = Opt("WinTitleMatchMode", 4)
    Local $aTray_Pos = WinGetPos("[CLASS:Shell_TrayWnd]")
    Opt("WinTitleMatchMode", $iPrevMode)


    ; If error in finding systray
    If Not IsArray($aTray_Pos) Then Return SetError(2, 0, -1)

    ; Determine direction of Toast motion and starting position
    If $aTray_Pos[1] > 0 Then
        $iToast_Move = 0x00050004 ; $AW_SLIDE_OUT_BOTTOM
        $aToast_Data[0] = @DesktopWidth - $iToast_Width
        ;$aToast_Data[1] = $aTray_Pos[1] - $iToast_Height
        $aToast_Data[1] = $b - $iToast_Height   ; MilesAhead Mod
        $aToast_Data[2] = 0x00040008 ; $AW_SLIDE_IN_BOTTOM
    Elseif $aTray_Pos[0] > 0 Then
        $iToast_Move = 0x00050001 ; $AW_SLIDE_OUT_RIGHT
        ;$aToast_Data[0] = $aTray_Pos[0] - $iToast_Width
        $aToast_Data[0] = $r - $iToast_Width ; MilesAhead Mod
        $aToast_Data[1] = @DesktopHeight - $iToast_Height - 10
        $aToast_Data[2] = 0x00040002 ; $AW_SLIDE_IN_RIGHT
    ElseIf $aTray_Pos[2] = @DesktopWidth Then
        $iToast_Move = 0x00050008 ; $AW_SLIDE_OUT_TOP
        $aToast_Data[0] = @DesktopWidth - $iToast_Width - 10
        $aToast_Data[1] = $t  ; MilesAhead Mod
        $aToast_Data[2] = 0x00040004 ; $AW_SLIDE_IN_TOP
    ElseIf $aTray_Pos[3] = @DesktopHeight Then
        $iToast_Move = 0x00050002 ; $AW_SLIDE_OUT_LEFT
        ;$aToast_Data[0] = $aTray_Pos[0] + $aTray_Pos[2]
        $aToast_Data[0] = $l  ; MilesAhead Mod
        $aToast_Data[1] = @DesktopHeight - $iToast_Height - 10
        $aToast_Data[2] = 0x00040001 ; $AW_SLIDE_IN_LEFT
    EndIf

    Return $aToast_Data

EndFunc ; => _Toast_Locate

It looks coolest when sliding out by the tray to be sure. But this lets the user set an .ini file option to move it if another program is using toast at the same time. I have ToastDirection 0 is original location by system tray, 1 mid left, 2 mid top, 3 mid right, 4 mid bottom on screen etc..

Edit: I fixed my mod in _Toast_Locate. The slide outs weren't working as I forgot to set $iToast_Move.

Edited by MilesAhead

Share this post


Link to post
Share on other sites

MilesAhead,

To get the handle of a visible Toast, you could add another element to the array returned from _Toast_Show. ;)

You might also want to take a look at my Notify UDF which allows you to have multiple small fixed-height GUIs sliding in from the side of the screen - the user can determine the side and direction of the flow. The 2 UDFs are pretty similar in concept and you may well be able to "mix and match" the two to get a composite which does what you want. :)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Thank you. I did look at Notify and try the example. I like the Toast action. It looks way cool. The thing I'm wrestling with is knowing what's going on from more than one process. In other words, if some program written by someone else that uses Toast is run by the user I have no way to detect it. For now the option to move the Toast seems ok though. If somebody is running more than one startup app that uses toast they can set the ini option to have it slide from another location.

Share this post


Link to post
Share on other sites

1RV34,

I am afraid I cannot reproduce your problem - the final Toast stays out for 30 secs when I run the code you posted. :)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

1RV34,

It worked as intended on my machine which is Windows 7 x64 with AutoIt V3.3.8.1 and I like to think I have a good history of finding bugs in this UDF.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

1RV34,

Now I see it - looking into it. :)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

[NEW VERSION] - 13 Feb 12 - version 1

Fixed: Using the [X] to retract a Toast which returned directly to the script meant that the message queue still held the relevant event. If the retraction was followed by a subsequent Toast before the message queue had been cleared, this queued event was likely to be interpreted by AutoIt as a click on the [X] of the new Toast. The UDF now clears the message queue when a Toast pauses the script awaiting user input to prevent AutoIt acting on a queued event. Thanks to 1RV34 for reporting the bug. :)

New UDF and zip in the first post. ;)

M23

Edit: See even newer version posted later today. ;)

Edited by Melba23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

1RV24,

If you set $iDelay to 0 then the script continues immediately and you do not get an [X] - the Toast stays visible until the next _Toast_Show/Hide call. :)

To have an [X] you need a negative integer for $iDelay - then the Toast behaves as you suggest. Remember that you can set a very large number as $iDelay and effectively wait forever (well long enough to make it seem like forever). ;)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

I thought

$aRet = _Toast_Show(0, "test", "test", 0, True)
and
$aRet = _Toast_Show(0, "test", "test", 0, False)
do the same so why not let one have the [X] but yea I guess using
$aRet = _Toast_Show(0, "test", "test", -2147483647, False)
could work too :) Edited by 1RV34

MsgBox(0x40040, "", "Hello Forum!")

Share this post


Link to post
Share on other sites

1RV34,

It was one of those "design decisions" - I went one way, you would have gone another. :)

Incidentally, the max $iDelay value is not the same as that used by Sleep - the UDF uses TimerInit/Diff. So I presume the value could go up to the max AutoIt can deal with which is 1.7E308 - in millisecs that is considerably longer than the age of the universe, so I feel "forever" is not a bad descriptiton! ;)


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Incidentally, the max $iDelay value is not the same as that used by Sleep - the UDF uses TimerInit/Diff. So I presume the value could go up to the max AutoIt can deal with which is 1.7E308 - in millisecs that is considerably longer than the age of the universe, so I feel "forever" is not a bad descriptiton! ;)

lol true that :)

Okies sorry if I'm a pain in the ass.. :S but I got the same bug again in a different way. It seems it is not only the [X] causing it. It also happens when a new _Toast_Show() is called halfway an other Toast.

#include "Toast.au3"
$aRet = _Toast_Show(0, "test", "test", -2, False)
Sleep(3000)
$aRet = _Toast_Show(0, "test", "test", -2, False)
Sleep(1000)
$aRet = _Toast_Show(0, "test", "test", -30, True); is barely shown for a second
_Toast_Hide()

I haven't tested if that bug also exists using _Toast_Hide() but it might be possible.

Edited by 1RV34

MsgBox(0x40040, "", "Hello Forum!")

Share this post


Link to post
Share on other sites

1RV34,

After the investigation for the last report this one is easily fixed. :)

I hope you are not going to spend the rest of the day running test scripts looking for bugs! ;)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

No sorry I'm actually making a script myself using your Toast UDF but I just noticed them randomly XD

Edit: funny thing I notice, your Toast UDF is actually the only UDF I'm including o.o (well do File.au3 & GUIConstantsEx.au3 count?) I just like it a lot XD

Edited by 1RV34

MsgBox(0x40040, "", "Hello Forum!")

Share this post


Link to post
Share on other sites

[NEW VERSION] - 13 Feb 12 - version 2

Fixed:

Using the [X] to retract a Toast which returned directly to the script meant that the message queue still held the relevant event. If the retraction was followed by a subsequent Toast before the message queue had been cleared, this queued event was likely to be interpreted by AutoIt as a click on the [X] of the new Toast. The UDF now clears the message queue when a Toast pauses the script awaiting user input to prevent AutoIt acting on a queued event.

Running _Toast_Show before an [X] Toast retracted automatically left an Adlib function running which then retracted the subsequent Toast early.

Thanks to 1RV34 for reporting the bugs. :)

New UDF and zip in the first post. ;)

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

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

×
×
  • Create New...