Popular Post ioa747 Posted May 1 Popular Post Posted May 1 (edited) Hi everyone, I'd like to share a project I've been working on: UC_Framework. It is a lightweight framework designed to create modern, reactive, and highly customizable GDI+ controls for AutoIt. My goal was to create a standardized, extensible way to introduce custom controls into AutoIt, moving away from static functions and towards a more "Object-Oriented" logic using AutoIt Maps Key Features: Reactive Engine: Property changes automatically trigger a redraw of the control. Extensible Architecture: The framework is designed as an "Engine." Adding a new control (e.g., a Gauge or a Custom Listview) is just a matter of defining its properties in the Map and creating its Draw function. Modern UI Elements: Includes Toggles (Round/Rect), Sliders (Horizontal/Vertical), Custom Buttons (Classic/Rounded/Pill), ,Links, labels, (more are coming). Property Management: Centralized property manager for easy control manipulation using _UC_Set and _UC_Get. Customization: Full control over colors, corner radius, fonts, and tooltips. Interactive: Built-in support for hover states, click events, and keyboard accelerators. Technical Implementation: The framework uses a Global Map (ID 1) to act as a Provider for system-wide constants, cursors, and shared resources, ensuring that your GUI remains lightweight and organized. This framework is currently in its early stages (Alpha). I am sharing it now because I want to establish a solid foundation and gather feedback on the architecture. Ideas for new controls to be integrated into the library. What's New Spoiler Version: 0.0.6 Feature Request 1552133 Version: 0.0.6.2 Feature Request 1552156 Version: 0.0.7.0 New: ProgressBars (Smooth, customizable). (🏆Thanks to Polar Comment-1552322) New: Image controls (PNG with Alpha transparency & Scaling). Improved: Unified Drawing engine for sharper borders and faster performance. Version: 0.0.8.0 New Centralized Timer Engine: Completely overhauled the timer logic. Timers are now fully managed at the framework level via an internal routing table. Fix Rapid-Fire Click: Resolved the click-delay issue reported by genius257 Comment-1552606 by properly intercepting and routing the $WM_LBUTTONDBLCLK (0x0203) Windows message. Buttons now fire as fast as you can click them! New: circular/radial ProgressBars . (🏆Thanks to Polar Comment-1552532) Version: 0.0.9.0 Fix: Timer Engine crashed on running x64. Reapproached timer logic issue reported by argumentum Comment-1552835 by bypassing the native _Timer_SetTimer and _Timer_KillTimer Comment-1552843 New: HourMinute component to choose the time (🏆Thanks to Polar Comment-1552831) Version: 0.0.10.0 Fix: Refactored HourMinute component; removed static variables to ensure stability across multiple control instances. New: Rating component. (🏆Thanks to Polar Comment-1552854) Version: 0.0.11.0 Architecture: Complete project refactoring. Separated core engine (Frame/) from individual components (UC/) and assets, improving maintainability and reducing footprint. Comment-1552895 Example1.au3 expandcollapse popup; https://www.autoitscript.com/forum/topic/213667-uc_framework-universal-controls/ ;---------------------------------------------------------------------------------------- ; Title...........: Example1.au3 ; Description.....: Example of using the UC_Framework.au3 ; AutoIt Version..: 3.3.18.0 Author: ioa747 Script Version: 0.0.11.0 ; Note............: Testet in Windows 11 Pro 25H2 Date:22/05/2026 ; Link............: https://github.com/ioa747/UC_Framework ;---------------------------------------------------------------------------------------- #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #include "UC_Framework\UC_Framework.au3" _Main() Func _Main() Local $hMainGui = GUICreate("Universal Controls GUI", 580, 480, -1, -1, BitOR($WS_CLIPCHILDREN, $GUI_SS_DEFAULT_GUI)) _UC_GUISetBkColor(0xF0F0F0, $hMainGui) Local $idLblTheme = GUICtrlCreateLabel("GUI Theme", 20, 10, 150, 17) ; === Toggles === Local $idToggleTheme = _UC_Toggle_Create($hMainGui, 20, 30, 50, 25, 0, 0xF0F0F0, 0x758184, 0xD1D1D1) Local $idToggle1 = _UC_Toggle_Create($hMainGui, 20, 80, 50, 25, 0, 0x0094FF) Local $idToggle2 = _UC_Toggle_Create($hMainGui, 20, 130, 50, 25, 1, 0xFF6A00, 0x33AA00) ; === Sliders === Local $idHLabel = GUICtrlCreateLabel("Horizontal Slider (50):", 20, 180) Local $idHSlider = _UC_Slider_Create($hMainGui, 20, 200, 180, 20, 0, 100, 50, 0, 0x4CD964, 0xCCCCCC, 0xFFFFFF, 4) Local $idVLabel = _UC_Label_Create($hMainGui, "Vertical Slider (20):", 340, 25, 20, 150, 3, 0x000000) Local $idVSlider = _UC_Slider_Create($hMainGui, 360, 25, 20, 150, 0, 20, 20, 1, 0x0078D7) ; === Buttons === Local $btnClassic = _UC_Button_Create($hMainGui, "CLASSIC RECT", 220, 20, 100, 35, 0, 0x3A71B1, 0xFFFFFF) _UC_Set(-1, "State", 0) Local $btnModern = _UC_Button_Create($hMainGui, "ROUNDED CORNERS", 220, 70, 100, 35, 5, 0x3C975A, 0xFFFFFF) Local $btnPill = _UC_Button_Create($hMainGui, "PILL BUTTON", 220, 120, 100, 35, 30, 0xA84646, 0xFFFFFF) Local $btnRound1 = _UC_Button_Create($hMainGui, ChrW(59448), 220, 170, 35, 35, 34, 0xA14300, 0xFFFFFF) _UC_Set(-1, "Font", "Segoe Fluent Icons") _UC_Set(-1, "FontSize", 12) _UC_Set(-1, "Tooltip", "FolderOpen") _UC_Set(-1, "ShowTooltip", 1) Local $btnRound2 = _UC_Button_Create($hMainGui, "R2", 260, 170, 35, 35, 34, 0x7800AC, 0xFFFFFF) Local $btnRound3 = _UC_Button_Create($hMainGui, ChrW(59213), 300, 170, 35, 35, 34, 0xFF6A00, 0xFFFFFF) _UC_Set(-1, "Font", "Segoe Fluent Icons") _UC_Set(-1, "FontSize", 12) ; === Progressbar === Local $idProgress = _UC_ProgressBar_Create($hMainGui, 20, 240, 350, 24, 0, 100, 50) _UC_Set(-1, "ShowPercent", True) ; === Radial Progressbar === Local $idRadial = _UC_RadialProgress_Create($hMainGui, 400, 40, 100) _UC_Set(-1, "RingThickness", 12) _UC_Set(-1, "FontSize", 16) _UC_Set(-1, "Value", 50) ; === Links === Local $Link = "https://github.com/ioa747/NetWebView2Lib" Local $idLink = _UC_Link_Create($hMainGui, "webview2autoit", $Link, 100, 30, 80, 20, 12) _UC_Set(-1, "ShowTooltip", 1) ; === Image === Local $iWidth, $sImage = @ScriptDir & "\UC_Framework\UC\Assets\1272.png" Local $idImage1 = _UC_Image_Create($hMainGui, $sImage, 10, 300, 0.6) $iWidth = _UC_Get(-1, "Width") Local $idImage2 = _UC_Image_Create($hMainGui, $sImage, 10 + $iWidth, 300, 0.4) $iWidth += _UC_Get(-1, "Width") Local $idImage3 = _UC_Image_Create($hMainGui, $sImage, 10 + $iWidth, 300, 0.2) _UC_Set(-1, "SetFocus", 1) ; === HourMinute === Local $idHourMinute = _UC_HourMinute_Create($hMainGui, 410, 170, 14, 35) ; 14:35 inicial ; === Rating === Local $idRating = _UC_Rating_Create($hMainGui, 400, 240, 24, 5, 3, 0) ; === InfoBox === ;Local $idBox1 = _UC_InfoBox_Create($hMainGui, 20, 20, 340, 100, "EARNINGS (ANNUAL)", "$215,000", "$") ;Local $idBox2 = _UC_InfoBox_Create($hMainGui, 380, 20, 200, 80, "TOTAL", "98,400", "£", "Segoe UI", 32, 0xE74C3C, 0xE74C3C, 0x1F1F1F, 0xE74C3C, 0xFFFFFF,6) Local $idBox3 = _UC_InfoBox_Create($hMainGui, 400, 270, 140, 55, "PAYED", "45k", "£", "Segoe UI" , 16, 0xE74C3C, 0xE74C3C, 0x1F1F1F, 0xE74C3C, 0xFFFFFF,6,0,0,0) Local $idBox4 = _UC_InfoBox_Create($hMainGui, 400, 330, 140, 55, "MONEY", "200k", "$", "Segoe UI", 34, 0x0F52BA, 0x0F52BA, 0x90D5FF, 0x0F52BA, 0x000000, 6,1,1,1) ; ================================================================= ; === Timer === _UC_Timer_Set($idImage3, 100, "_CallBackTimerFunction") _UC_Timer_Set($btnRound2, 500, "_CallBackTimerFlash") Local $id_UP = GUICtrlCreateDummy() Local $id_DOWN = GUICtrlCreateDummy() Local $id_UP_XL = GUICtrlCreateDummy() Local $id_DOWN_XL = GUICtrlCreateDummy() Local $aAccelKeys[4][2] = [["{UP}", $id_UP], ["{DOWN}", $id_DOWN], ["+{UP}", $id_UP_XL], ["+{DOWN}", $id_DOWN_XL]] GUISetAccelerators($aAccelKeys) GUISetState(@SW_SHOW) _MapCW(_UC_Get(1), "--- System Variable ---") ConsoleWrite("---------------------" & @CRLF) Local $iMsg, $iSliderXLStep, $iVal, $iTimeValue While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE ExitLoop Case $id_UP _UC_Slider_UpdateFromValue(Default, 1) Case $id_DOWN _UC_Slider_UpdateFromValue(Default, -1) Case $id_UP_XL $iSliderXLStep = _UC_Get(Default, "SliderXLStep") _UC_Slider_UpdateFromValue(Default, $iSliderXLStep) Case $id_DOWN_XL $iSliderXLStep = _UC_Get(Default, "SliderXLStep") _UC_Slider_UpdateFromValue(Default, -$iSliderXLStep) Case $idToggleTheme ConsoleWrite("$idToggleTheme:" & GUICtrlRead($idToggleTheme) & @CRLF) Local $iTxtColor, $iBkColor If GUICtrlRead($idToggleTheme) Then $iBkColor = 0x262A2B $iTxtColor = 0xFFFFFF Else $iBkColor = 0xF0F0F0 $iTxtColor = 0x000000 EndIf _UC_GUISetBkColor($iBkColor, $hMainGui) GUICtrlSetColor($idLblTheme, $iTxtColor) GUICtrlSetColor($idHLabel, $iTxtColor) _UC_Set($idVLabel, "Color", $iTxtColor) _UC_Set($idHourMinute, "BoxColor", $iBkColor) _UC_Set($idHourMinute, "TextColor", $iTxtColor) _UC_Refresh($hMainGui) Case $idToggle1 ConsoleWrite("$idToggle1:" & GUICtrlRead($idToggle1) & @CRLF) GUISetState((GUICtrlRead($idToggle1) ? @SW_HIDE : @SW_SHOW), _UC_Get($idToggle2, "UC_hWnd")) Case $idToggle2 ConsoleWrite("$idToggle2:" & GUICtrlRead($idToggle2) & @CRLF) _UC_Set($idHSlider, "ThumbType", GUICtrlRead($idToggle2)) Case $idHSlider $iVal = GUICtrlRead($idHSlider) GUICtrlSetData($idHLabel, "Horizontal Slider (" & $iVal & "):") _UC_Set($idProgress, "Value", $iVal) _UC_Set($idRadial, "Value", $iVal) Case $idVSlider $iVal = GUICtrlRead($idVSlider) _UC_Set($idVLabel, "Text", "Vertical Slider (" & $iVal & "):") _UC_Set($btnPill, "CornerRadius", $iVal) Case $idHourMinute $iTimeValue = GUICtrlRead($idHourMinute) ConsoleWrite("$iTimeValue=" & $iTimeValue & @CRLF) Case $idLink ShellExecute(_UC_Get($idLink, "Value")) Case $btnClassic, $btnModern, $btnPill ConsoleWrite("'" & _UC_Get(Default, "Text") & "' Button Clicked!" & @CRLF) Case $btnRound1 ConsoleWrite("'" & _UC_Get($btnRound1, "Tooltip") & "' Button Clicked!" & @CRLF) Case $btnRound2 ConsoleWrite("'" & GUICtrlRead($btnRound2) & "' Button Clicked!" & @CRLF) _UC_Timer_Set($idImage3, 100, "_CallBackTimerFunction") Case $btnRound3 ConsoleWrite("'" & GUICtrlRead($btnRound3) & "' Button Clicked!" & @CRLF) _MapCW(_UC_Get($btnRound3), "--- $btnRound3 ---") ConsoleWrite("---------------------" & @CRLF) Case $idImage1, $idImage2, $idImage3 ConsoleWrite("'" & _UC_Get(Default, "Filename") & "' Scale:" & _UC_Get(Default, "Scale") & @CRLF) Case $idRating ConsoleWrite("$idRating=" & GUICtrlRead($idRating) & @CRLF) Case $idBox3, $idBox4 ;$idBox1, $idBox2 ConsoleWrite("$idBox=" & _UC_Get(Default, "Title") & ": " & _UC_Get(Default, "Value") & @CRLF) EndSwitch WEnd _UC_Destroy($hMainGui) EndFunc ;==>_Main Func _CallBackTimerFunction(ByRef $mt) If Not MapExists($mt, "Custom") Then $mt.Custom = 3 $mt.Custom -= 0.2 Local $UC = _UC_Properties($mt.ControlID) WinMove($UC.UC_hWnd, "", Default, Default, $UC.Width * $mt.Custom, $UC.Height * $mt.Custom) If $mt.Custom < 0.9 Then _UC_Timer_Kill($mt.id) EndFunc ;==>_CallBackTimerFunction Func _CallBackTimerFlash(ByRef $mt) Local $iFlash = Mod($mt.Fired, 2) Local $UC = _UC_Properties($mt.ControlID) $UC.BtnColor = ($iFlash ? 0xB200FF : 0x7800AC) _UC_Properties($mt.ControlID, $UC) EndFunc ;==>_CallBackTimerFlash 🎚️ UC_Framework.au3 https://github.com/ioa747/UC_Framework main.zip Please, every comment is appreciated! leave your comments and experiences here! Thank you very much Edited May 27 by ioa747 Version (0.0.11.0) argumentum, Danyfirex, pixelsearch and 6 others 7 2 I know that I know nothing
argumentum Posted May 1 Posted May 1 Requests: 1) When you click a button, if you slide the cursor away from the control, don't execute. 2) The toggles, to act as the buttons do, that act on the release of the mouse. 3) if, because this is a GDI GUI, tab around the controls. This is a very nice looking thing 🤩 Thanks for sharing ioa747 and WildByDesign 1 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting
ioa747 Posted May 2 Author Posted May 2 11 hours ago, argumentum said: Requests: 1) When you click a button, if you slide the cursor away from the control, don't execute. ✔️ 2) The toggles, to act as the buttons do, that act on the release of the mouse. ✔️ 3) if, because this is a GDI GUI, tab around the controls. ✔️ This is a very nice looking thing 🤩 Thank you very much 😍 I updated the first post Version (0.0.6) argumentum 1 I know that I know nothing
WildByDesign Posted May 2 Posted May 2 This is really special. I can envision a lot of potential for this framework. Especially for the fact that you have designed it in such a way that it can be extended upon with more controls and customization. And we have some real GDI+ geniuses in this forum should they decide to partake in this. The controls really are lightweight, fast and responsive. I have only one minor concern: I feel like the rounded corners and edges in general are a bit fuzzy. If they can be sharpened, I think that it would be an important improvement.
WildByDesign Posted May 2 Posted May 2 If someone designs a new control (for example, ListView or TreeView) for the framework, would that control work with the existing standard UDF (eg. _GUICtrlListView_*) functions?
argumentum Posted May 2 Posted May 2 if you take the GUI and press alt-space then arrow down, will go to move, then press enter, and that's the idea when tabbing around. Should adding the accelerator ( for when you press enter on a highlighted control ) be left to the UDF or the user? ( in regards of having the control execute. ) 🤔 and !, thanks for the update Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting
ioa747 Posted May 3 Author Posted May 3 (edited) 12 hours ago, WildByDesign said: I feel like the rounded corners and edges in general are a bit fuzzy. If they can be sharpened, I think that it would be an important improvement. I added the properties to all the controls, I hope this improve the situation ; Settings for Sharpening _GDIPlus_GraphicsSetSmoothingMode($hBack, 4) ; HighQuality Antialiasing _GDIPlus_GraphicsSetPixelOffsetMode($hBack, 4) ; HighQuality (Half-pixel offset) _GDIPlus_GraphicsSetTextRenderingHint($hBack, 5) ; AntiAliasGridFit (Crisp Text) 12 hours ago, WildByDesign said: If someone designs a new control (for example, ListView or TreeView) for the framework, would that control work with the existing standard UDF (eg. _GUICtrlListView_*) functions? That’s a very insightful question. Initially, the short answer is no, standard UDFs (like _GUICtrlListView_*) won't work directly because when you design a new control from scratch, you are primarily working with its structural elements (e.g., a ListView would consist of a data array and a GDI+ rendered area). To achieve full compatibility, a wrapper would be needed, but that often means losing the full creative freedom of GDI+ design. However, there is a more advanced way I’m handling this in the UC_Framework: Since every control in this framework is hosted in its own dedicated child window ($hChild = GUICreate(...)), it acts as a container. This allows for a Hybrid Design: GDI+ Controls: Purely custom-drawn for maximum flexibility and "sharpened" aesthetics (using the modes we discussed). Native Composition: You can actually 'nest' a native Windows control inside a UC_Control container. For a complex control like a ListView, we can use GDI+ to draw a beautiful, modern frame and then host a native ListView inside it. This way, you get the best of both worlds: the visual superiority of the framework and the functional compatibility with standard UDFs. So, while a pure GDI+ control won't 'speak' the native UDF language, the framework's architecture is open enough to allow 'Hybrid Controls' that do! 10 hours ago, argumentum said: Should adding the accelerator ( for when you press enter on a highlighted control ) Regarding the accelerators, I’ve decided that the UDF should handle this logic to keep things simple for the user. For now, I have implemented the Spacebar as the primary keyboard trigger. I chose Space over Enter because, in the Windows API, the Enter key requires extra message handling (like $WM_GETDLGCODE) and window separation to prevent it from being 'stolen' by the system—which is a lot of extra overhead for the core framework at this stage. However, implementing even the Spacebar was tricky due to the 'Mouse Safety' feature I recently added (where sliding the cursor away cancels the click). To make keyboard triggers work without a mouse present, I introduced a special coordinate exception: ; Logic to allow Keyboard Triggers while maintaining Mouse Safety ; If coordinates are -1, -1, we bypass the 'MouseOver' check If _UC_IsMouseOver($hWnd) Or ($iX = -1 And $iY = -1) Then ; ... execution logic ... EndIf ; How the Spacebar trigger is handled internally: Case $UC_TYPE_BUTTON _UC_Button_WM_LBUTTONDOWN($idDummy, $hWnd, $iX, $iY) Sleep(50) _UC_Button_WM_LBUTTONUP($idDummy, $hWnd, -1, -1) ; Using -1, -1 to force execution I updated the first post Version (0.0.6.2) Edited May 3 by ioa747 argumentum and WildByDesign 2 I know that I know nothing
WildByDesign Posted May 3 Posted May 3 (edited) 12 hours ago, ioa747 said: I added the properties to all the controls, I hope this improve the situation Yes, absolutely. Especially once I added DPI scaling to my testing example. The difference between the previous release and this updated release is fantastic. Much sharper. Thank you for the quick update and also your very well detailed reply. I appreciate it. 12 hours ago, ioa747 said: Initially, the short answer is no, standard UDFs (like _GUICtrlListView_*) won't work directly because when you design a new control from scratch, you are primarily working with its structural elements (e.g., a ListView would consist of a data array and a GDI+ rendered area). To achieve full compatibility, a wrapper would be needed, but that often means losing the full creative freedom of GDI+ design. Thank you for clarifying. Also, I would think that if a developer does come along and adds a beautiful ListView control entirely custom in GDI+, they could also potentially create functions that are similar to UDF _GUICtrlListView_* functions but that are more specific to their custom GDI+ ListView. The sky is the limit. By the way, you are so incredibly well organized with the way that you respond with details, the way that you document everything and so much more. You are clear and concise with everything (all aspects) and that it is very helpful to learn from and understand. 12 hours ago, ioa747 said: For a complex control like a ListView, we can use GDI+ to draw a beautiful, modern frame and then host a native ListView inside it. This way, you get the best of both worlds: the visual superiority of the framework and the functional compatibility with standard UDFs. This is a very interesting possibility as well. So there are many different possibilities with this UC Framework which makes it very flexible. Edited May 3 by WildByDesign ioa747 1
Polar Posted May 8 Posted May 8 (edited) @ioa747 i'ts a nice set of components, I add the progressbar to you set, i'm not good as you, but with some help I made this. If you drag the Horizontal Slider the progress bar will follow it. UC_Framework_progressbar.zip Edited May 8 by Polar Danyfirex, ioa747 and WildByDesign 3
ioa747 Posted May 8 Author Posted May 8 (edited) Wow, this is amazing! Thank you for this contribution. Seeing a new component like the ProgressBar being built using the UC_Framework standards is exactly what I hoped for when I posted this project. You’ve captured the logic perfectly, the way you used the properties map and the GDI+ drawing routine is spot on. It’s a great addition to the set! I’ve taken the liberty of reviewing the code, and I love how you handled the horizontal/vertical switch. For the next official update, I will integrate this API into the main framework. The updated Example1.au3 you provided shows exactly how versatile these controls can be when they all work together under the same theme logic. Thank you for being part of this! You're definitely more than 'good enough', this is top-tier work Edited May 9 by ioa747 Danyfirex and WildByDesign 2 I know that I know nothing
ioa747 Posted May 10 Author Posted May 10 Version: 0.0.7.0 New: ProgressBars (Smooth, customizable). (🏆Thanks to Polar ) New: Image controls (PNG with Alpha transparency & Scaling). Improved: Unified Drawing engine for sharper borders and faster performance. I updated the first post Version (0.0.7.0) Polar, WildByDesign and argumentum 3 I know that I know nothing
Polar Posted May 14 Posted May 14 @ioa747 one more component to the framework, I create the Radial Progress Bar. If you drag the Horizontal Slider the Radial progress bar will follow it. RadialProgressbar.zip ioa747, WildByDesign and argumentum 3
genius257 Posted May 15 Posted May 15 @ioa747 this is a very cool project! I am experiencing that button clicks only registers a click every second, even if i click more in that time. I took a quick look at the code, but cannot seem to find out why? ioa747 1 To show your appreciation My highlighted topics: AutoIt Package Manager, AutoItObject Pure AutoIt, AutoIt extension for Visual Studio Code Github: AutoIt HTTP Server, AutoIt HTML Parser
ioa747 Posted May 19 Author Posted May 19 On 5/15/2026 at 1:02 AM, Polar said: I create the Radial Progress Bar. Thank you for your awesome contribution! 🤩 On 5/15/2026 at 11:01 PM, genius257 said: I took a quick look at the code, but cannot seem to find out why? If you don't know, then we screwed up! 😁 Just kidding, I really appreciate you taking a look at the code! The reason it's behaving this way is due to a missing $WM_LBUTTONDBLCLK (0x0203) message handler in the main handler (__UC_Main_MsgHandler). Thanks for the flagging, your feedback means a lot! genius257 and WildByDesign 2 I know that I know nothing
ioa747 Posted May 19 Author Posted May 19 Version: 0.0.8.0 New Centralized Timer Engine: Completely overhauled the timer logic. Timers are now fully managed at the framework level via an internal routing table. Fix Rapid-Fire Click: Resolved the click-delay issue reported by genius257 Comment-1552606 by properly intercepting and routing the $WM_LBUTTONDBLCLK (0x0203) Windows message. Buttons now fire as fast as you can click them! New: circular/radial ProgressBars . (🏆Thanks to Polar Comment-1552532) I updated the first post Version (0.0.8.0) WildByDesign, genius257 and argumentum 3 I know that I know nothing
water Posted May 20 Posted May 20 Added your UDF to the wiki mLipok and ioa747 2 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Polar Posted May 23 Posted May 23 (edited) @ioa747 I made a new component "HourMinute" to chose the time, i try my best, its working but the click on the buttons don't are fast as your buttons, I tink you or other people can improve it. HourMinute.zip Edited May 23 by Polar ioa747 and WildByDesign 2
argumentum Posted May 23 Posted May 23 41 minutes ago, Polar said: new component "HourMinute" Spoiler expandcollapse popup"C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,22) : warning: $BOX_X already declared/assigned Local $BOX_X = 45, ~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,35) : warning: $BOX_Y already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,48) : warning: $BOX_W already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,61) : warning: $BOX_H already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, $BOX_H = 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2275,36) : warning: $topY already declared/assigned Local $topY = $y + $marginY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2276,44) : warning: $bottomY already declared/assigned Local $bottomY = $y + $h - $marginY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2331,58) : warning: $iHit: declared, but not used in func. Local $iHit = _UC_HourMinute_HitTest($hWnd, $iX, $iY) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2335,34) : warning: $hWnd: declared, but not used in func. Func _UC_HourMinute_HitTest($hWnd, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2336,61) : warning: $BOX_H: declared, but not used in func. Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, $BOX_H = 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(130,43) : warning: $idLblTime: possibly used before declaration. GUICtrlSetColor($idLblTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(131,51) : warning: $idLblSelectedTime: possibly used before declaration. GUICtrlSetColor($idLblSelectedTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(94,52) : warning: $iTimeValue: declared, but not used in func. Local $aMsg, $iSliderXLStep, $iVal, $iTimeValue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(130,43) : error: $idLblTime: undeclared global variable. GUICtrlSetColor($idLblTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(131,51) : error: $idLblSelectedTime: undeclared global variable. GUICtrlSetColor($idLblSelectedTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3 - 2 error(s), 12 warning(s) !>17:51:13 AU3Check ended. Press F4 to jump to next error. rc:2 ..it's got some issues on my side 😕 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting
Polar Posted May 23 Posted May 23 1 hour ago, argumentum said: Hide contents expandcollapse popup"C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,22) : warning: $BOX_X already declared/assigned Local $BOX_X = 45, ~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,35) : warning: $BOX_Y already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,48) : warning: $BOX_W already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2244,61) : warning: $BOX_H already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, $BOX_H = 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2275,36) : warning: $topY already declared/assigned Local $topY = $y + $marginY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2276,44) : warning: $bottomY already declared/assigned Local $bottomY = $y + $h - $marginY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2331,58) : warning: $iHit: declared, but not used in func. Local $iHit = _UC_HourMinute_HitTest($hWnd, $iX, $iY) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2335,34) : warning: $hWnd: declared, but not used in func. Func _UC_HourMinute_HitTest($hWnd, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\UC_Framework.au3"(2336,61) : warning: $BOX_H: declared, but not used in func. Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, $BOX_H = 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(130,43) : warning: $idLblTime: possibly used before declaration. GUICtrlSetColor($idLblTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(131,51) : warning: $idLblSelectedTime: possibly used before declaration. GUICtrlSetColor($idLblSelectedTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(94,52) : warning: $iTimeValue: declared, but not used in func. Local $aMsg, $iSliderXLStep, $iVal, $iTimeValue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(130,43) : error: $idLblTime: undeclared global variable. GUICtrlSetColor($idLblTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3"(131,51) : error: $idLblSelectedTime: undeclared global variable. GUICtrlSetColor($idLblSelectedTime, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\Owner\Downloads\au3.HourMinute\Example1.au3 - 2 error(s), 12 warning(s) !>17:51:13 AU3Check ended. Press F4 to jump to next error. rc:2 ..it's got some issues on my side 😕 Hello @argumentum, sorry its my fault, the lines 130 and 131, can be removed from Example1.au3. I reuploaded the files. I dont know why the error don't occurs here with this lines in the file when i run in my computer Please check if it will work.
argumentum Posted May 24 Posted May 24 (edited) Spoiler expandcollapse popup"C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2244,22) : warning: $BOX_X already declared/assigned Local $BOX_X = 45, ~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2244,35) : warning: $BOX_Y already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2244,48) : warning: $BOX_W already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2244,61) : warning: $BOX_H already declared/assigned Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, $BOX_H = 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2275,36) : warning: $topY already declared/assigned Local $topY = $y + $marginY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2276,44) : warning: $bottomY already declared/assigned Local $bottomY = $y + $h - $marginY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2331,58) : warning: $iHit: declared, but not used in func. Local $iHit = _UC_HourMinute_HitTest($hWnd, $iX, $iY) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2335,34) : warning: $hWnd: declared, but not used in func. Func _UC_HourMinute_HitTest($hWnd, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\UC_Framework.au3"(2336,61) : warning: $BOX_H: declared, but not used in func. Local $BOX_X = 45, $BOX_Y = 10, $BOX_W = 70, $BOX_H = 26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Owner\Downloads\HourMinute\Example1.au3"(94,52) : warning: $iTimeValue: declared, but not used in func. Local $aMsg, $iSliderXLStep, $iVal, $iTimeValue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\Owner\Downloads\HourMinute\Example1.au3 - 0 error(s), 10 warning(s) ->20:41:21 AU3Check ended. Press F4 to jump to next error. rc:1 >Running:(3.3.18.0):D:\Utilities\AutoIt3\autoit3_x64.exe "C:\Users\Owner\Downloads\HourMinute\Example1.au3" +>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart. --> Press Ctrl+BREAK to Stop. --- System Variable --- UC_ToolTip_hWnd = 0x000000000954175E UC_ToolTip_BkColor = 16775380 UC_ToolTip_TxtColor = 0 UC_ToolTip_Transparency = 220 UC_ToolTip_FontName = Segoe UI UC_ToolTip_FontSize = 9 UC_ToolTip_FontWeight = 400 UC_ToolTip_FontAttribute = 0 UC_ToolTip_Text = Cursor_Hand = 0 Cursor_AppStarting = 1 Cursor_Arrow = 2 Cursor_Cross = 3 Cursor_Help = 4 Cursor_IBeam = 5 Cursor_Icon = 6 Cursor_No = 7 Cursor_Size = 8 Cursor_SizeAll = 9 Cursor_SizeNESW = 10 Cursor_SizeNS = 11 Cursor_SizeNWSE = 12 Cursor_SizeWE = 13 Cursor_UpArrow = 14 Cursor_Wait = 15 Cursor_None = 16 UC_LastCreatedID = 25 UC_ActiveControlID = 4 UC_ActiveControlType = 1 > !>20:41:23 AutoIt3 ended. rc:-1073741819 +>20:41:23 AutoIt3Wrapper Finished. ..it still has problems. Edit: I was running on x64. It don't crash on x86. Edited May 24 by argumentum more ioa747 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now