Jump to content

Recommended Posts

Posted (edited)

User Interface Builder

  

Overview

 

  • Use this tool to visually design Windows applications with a focus on Metro windows, standard windows, and Tool windows.
  • This is for users who want a faster and simpler development tool.
  • Drag-and-drop GUI creation, code generation, and easy control alignment tools.
  • No more clicking through property sheets to set variable names, sizes, and the control’s text.

 

Please replace "MetroUDF-Required\SSCtrlHover.au3" within the metro UDF files to see more meaningful messages in the console. The following line was inserted into the function. This prevents crashing on syntax and logical errors while Metro buttons are in use.

Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
    If $BLOCK_HOVER_REGISTRATION Then Return

 

Unfortunately, the following will have to added to your scripts if you already use Metro UDF and you replace "SSCtrlHover.au3".

Global $BLOCK_HOVER_REGISTRATION = False

#include "MetroGUI_UDF.au3"
#include "MetroGUI_UDF_xpk.au3"
#include "_GUIDisable.au3" ; For dim effects when msgbox is displayed

 

Features

 

  • Metro Controls for all window types
  • WYSIWYG real-time preview
  • Generates AutoIt GUI and message loop code
  • Multiple control selection and manipulation
  • Make additional selections with the CTRL key
  • Accelerated control movements with the SHIFT key
  • Change controls position with mouse or arrow keys
  • Double click a control to precisely set its size and text
  • Save/load GUI layouts and Control layouts to files
  • Custom styles/themes and Controls using Metro
  • Snap-to-guide, and toolbar alignment aids
  • Drag down guides from the top and left sides of the Designer window
  • Copy-n-paste between different window types

 

Technical Details

 

  • .Gui/.Ctrls file is a simple delimited text file
  • Copy-n-paste is a similar file without the window specifications
  • The application is meant to be portable, so it is one file
  • The only Custom UDFs in use is Metro 5.1, and my Metro Expansion pack
  • The script uses Label controls for everything. No GDI was used.
  • Every control handle is saved in an array
  • Maps are used in Metro and in future UDFs containing new controls
  • You need Metro 5.1 UDF 

 

Limitations and known issues

 

  • Resizing the Metro window with the mouse is flaky
  • Changing control and window styles is not implemented
  • Window size cannot be changed precisely
  • Undo functionality might cause problems with code generation
  • No Redo implemented

 

 Thank you BB19 and everyone that contributed to Metro UDF.

 

 

image.png.c88d0f0d221850f52bf6bd13418edbda.png

MetroGUI_UDF_xpk.au3 SSCtrlHover.au3

UserInterfaceBuilder.au3

Edited by 0xC0FFEE
Posted (edited)

Thanks for taking a look at my app!

 

Return Run(@ComSpec & " /C AutoIt3.exe """ & @ScriptFullPath & """ " & $StringCall ,"C:\Program Files (x86)\AutoIt3",@SW_HIDE)

 

The code above is only used to execute this function:

Start('"TransformFontDialog"')

 

The actual syntax and logical errors do not display on the console because a subclass (_WinAPI_SetWindowSubclass) is registered. Every Metro button made calls "_cHvr_Register" at the end of creation. We can prevent this but all applications will need this Global Variable added before the #include.

Global $BLOCK_HOVER_REGISTRATION = True

#include "MetroGUI_UDF.au3"
#include "MetroGUI_UDF_xpk.au3"
#include "_GUIDisable.au3" ; For dim effects when msgbox is displayed

 

In addition, "MetroUDF-Required\SSCtrlHover.au3", function "_cHvr_Register", needs the line inserted:

Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
    If $BLOCK_HOVER_REGISTRATION Then Return

 

In your app, $BLOCK_HOVER_REGISTRATION must be set False so that the buttons will animate.

Global $BLOCK_HOVER_REGISTRATION = False

 

The edits talked about above are in the attached files. Please let me know if this helps. Now, if you "Throw Error", the true error message should display in the console.

image.png.a59d87da6387219f3e1f276639db3a00.png

UserInterfaceBuilder.au3 SSCtrlHover.au3

Edited by 0xC0FFEE
Posted
3 hours ago, 0xC0FFEE said:

The code above is only

Func Start($StringCall) ; argumentum
;~  If @AutoItExe = @ScriptFullPath Then this is an EXE
    Return ShellExecute(@AutoItExe, (@AutoItExe = @ScriptFullPath ? '' : ' "' & @ScriptFullPath & '" ') & $StringCall) ; this should work, I guess
EndFunc

Func Start($StringCall) ; 0xC0FFEE
;~  Run(@ComSpec & " /C AutoIt3.exe """ & @ScriptFullPath & """ ""Notify"" ""Hello World.""","C:\Program Files (x86)\AutoIt3")
    Return Run(@ComSpec & " /C AutoIt3.exe """ & @ScriptFullPath & """ " & $StringCall ,StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) -1),@SW_HIDE)
EndFunc

the above 2 options should work better because AutoIt can be installed other than default.

3 hours ago, 0xC0FFEE said:

Now, if you "Throw Error", the true error message should display in the console

Regardless, I still get that "rc:-1073740771" crash ? :(

PS: I'd love to dig deeper into the code and troubleshoot it but am too busy 😭

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Posted

Added a theme picker for Metro windows.

I changed $BLOCK_HOVER_REGISTRATION back to False so it would draw the controls with the correct colors. Please change it back to True if you are having trouble starting the application.

 

Global $BLOCK_HOVER_REGISTRATION = False

#include "MetroGUI_UDF.au3"
#include "MetroGUI_UDF_xpk.au3"
#include "_GUIDisable.au3" ; For dim effects when msgbox is displayed

 

image.thumb.png.49c595a939ddaac2dd31908a2d45f43b.png

  • 2 months later...
Posted

0xC0FFEE, this is awesome and super useful! I'm so fed up by manual gui control positioning and this great project is the solution. Keep it up, I am excited to see more. Will you accept any improvements or advices? It's been so long I am using MetroGUI_UDF, that I've also did something to extend its functionality. For example, _Metro_CreateInput and _Metro_CreateComboBox. I could provide some code to help in development of a couple useful control elements.

 

  

Posted (edited)
On 10/18/2025 at 4:07 AM, jaberwacky said:

Hello!

I'm getting this error:

(493,26) : error: _WinAPI_GetCapture() already defined.
Func _WinAPI_GetCapture()

Me too

and also

Quote

---------------------------
User Interface Builder
---------------------------
Call failed: Function "/ErrorStdOut" does not exist.

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

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

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

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...