Sign in to follow this  
Followers 0
Wombat

Setting controls placement via resolution...

17 posts in this topic

Alright So I've been trying to figure out a way to set a gui so that no matter the resolution it will show its controls correctly.

here a sample of what i need:

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region GUI
$hGUI = GUICreate("Test", 699, 199, Default, Default)
$Label1 = GUICtrlCreateLabel("Label1", 245, 73, 36, 17)
$Label2 = GUICtrlCreateLabel("Label2", 302, 73, 36, 17)
$Label3 = GUICtrlCreateLabel("Label3", 360, 73, 36, 17)
$Label4 = GUICtrlCreateLabel("Label4", 417, 73, 36, 17)
$Label5 = GUICtrlCreateLabel("Label5", 246, 109, 36, 17)
$Label6 = GUICtrlCreateLabel("Label6", 303, 109, 36, 17)
$Label7 = GUICtrlCreateLabel("Label7", 361, 109, 36, 17)
$Label8 = GUICtrlCreateLabel("Label8", 418, 109, 36, 17)
GUISetState(@SW_SHOW)
#EndRegion

While 1
sleep(10)
WEnd

I need to achive something similar without setting explicit LEFT and TOP values for the controls. The finished script will have a different gui size & placement, so it can be based on the windows values. It needs to be based on @Desktopwidth and @Desktopheight. Lastly, I've exhausted all of my ideas and couldn't find the right keywords to plug into google to dig for answers. I'll wait patiently for a response, thank you.

 


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

I wonder if you think the same as you me.
I once had problems with changing the appearance of the window.
Part of the problem solved by:
GUICtrlSetResizing(-1, $GUI_DOCKALL)
Edited by mlipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for 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 API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 - BETA * ADO.au3 UDF SMTP Mailer UDF *

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 * Best coding practices * 

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) * 

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 *

"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: 2017-06-04

Share this post


Link to post
Share on other sites

Wombat,

Look at GUICtrlSetResizing or the Opt equivalent - this allows the GUI to be set to whatever size you require and the controls alter size automatically. Here is an example I posted a while ago which also maintains the same aspect ratio: :)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; Set resize mode for controls
Opt("GUIResizeMode", $GUI_DOCKAUTO)

$hGUI = GUICreate("Test", 500, 300, -1, -1, BitOR($WS_SIZEBOX, $WS_SYSMENU))

$cButton_1 = GUICtrlCreateButton("Test 1", 10, 10, 80, 30)
$cButton_2 = GUICtrlCreateButton("Test 2", 10, 50, 80, 30)

GUISetState()

GUIRegisterMsg($WM_SIZING, "_WM_SIZING")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _WM_SIZING($hWnd, $iMsg, $wParam, $lParam)

    #forceref $iMsg, $wParam, $wParam

    If $hWnd = $hGUI Then

        Local $iNew_H, $iNew_W

        Local $sRect = DllStructCreate("Int[4]", $lParam)
        Local $iLeft = DllStructGetData($sRect, 1, 1)
        Local $iTop = DllStructGetData($sRect, 1, 2)
        Local $iRight = DllStructGetData($sRect, 1, 3)
        Local $iBottom = DllStructGetData($sRect, 1, 4)
        ; Keep the same aspect ratio
        Switch $wParam ; drag side or corner
            Case 1, 2 ; $WMSZ_LEFT, $WMSZ_RIGHT
                $iNew_H = Int(($iRight - $iLeft) * 300 / 500)
                DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 2) + $iNew_H, 4)
            Case Else
                $iNew_W = Int(($iBottom - $iTop) * 500 / 300)
                DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 1) + $iNew_W, 3)
        EndSwitch
    EndIf

EndFunc
You can even get the font to adjust size as well by using a message handler - but you will have to wait until tomorrow if you want an example of that as I will have to strip it out of another script. :)

M23

2 people like this

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

#4 ·  Posted (edited)

That's deffinitely soudning like the answer to my question.

I haven't implemented it but I am going to research the functiona dn its capabilities immediately after this post, thank you both.

Here's what I'm working on:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

$WS_EX_NOACTIVATE = 0x08000000
$MA_NOACTIVATE = 3
$MA_NOACTIVATEANDEAT = 4

HotKeySet("{ESC}", "On_Exit")
Opt("GUIOnEventMode", 1)

Global $left=@DesktopWidth/2
Global $aKeys[57] = ["Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Backspace", _
                     "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "\", _
                     "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'", "      ENTER  ", _
                     "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "   shift  ", _
                     "!@#", " ≡", " Alt ", "      SPACE      ", " : ) ", " ... ", " Ctrl "]
Global $bKeys[19] = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", _
                     "{", "}", ":", Chr(34), "<", ">", "?"]


; Create "keyboard" GUI
$hGUI = GUICreate("Test", @DesktopWidth, 267, -1, @DesktopHeight-267, $WS_POPUPWINDOW, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_NOACTIVATE))
GUISetBkColor(0, $hGUI)
WinSetTrans("Test", "", 175)



#region 1st Row
$r1b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[0], $left-325, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[1], $left-275, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[2], $left-225, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[3], $left-175, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[4], $left-125, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[5], $left-75, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[6], $left-25, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[7], $left+25, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[8], $left+75, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[9], $left+125, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[10], $left+175, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b12Button=GUICtrlCreateLabel(@CRLF & $aKeys[11], $left+225, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b13Button=GUICtrlCreateLabel(@CRLF & $aKeys[12], $left+275, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r1b14Button=GUICtrlCreateLabel(@CRLF & $aKeys[13], $left+325, 13, Default, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
#endregion

#region 2nd Row
$r2b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[14], $left-275, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[15], $left-225, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[16], $left-175, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[17], $left-125, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[18], $left-75, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[19], $left-25, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[20], $left+25, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[21], $left+75, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[22], $left+125, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[23], $left+175, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[24], $left+225, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b12Button=GUICtrlCreateLabel(@CRLF & $aKeys[25], $left+275, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r2b14Button=GUICtrlCreateLabel(@CRLF & $aKeys[26], $left+325, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
#endregion

#region 3rd Row
$r3b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[27], $left-275, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[28], $left-225, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[29], $left-175, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[30], $left-125, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[31], $left-75, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[32], $left-25, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[33], $left+25, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[34], $left+75, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[35], $left+125, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[36], $left+175, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[37], $left+225, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r3b12Button=GUICtrlCreateLabel(@CRLF & $aKeys[38], $left+275, 113, Default, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
#endregion

#region 4th Row
$r4b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[39], $left-225, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[40], $left-175, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[41], $left-125, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[42], $left-75, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[43], $left-25, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[44], $left+25, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[45], $left+75, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[46], $left+125, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[47], $left+175, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[48], $left+225, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r4b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[49], $left+275, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
#endregion

#region Final Row
$r5b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[50], $left-275, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r5b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[51], $left-225, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r5b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[52], $left-175, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r5b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[53], $left-125, 213, 293, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r5b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[54], $left+175, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r5b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[55], $left+225, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    GUICtrlSetOnEvent(-1, "_test")
$r5b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[56], $left+275, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333344)
    #endregion



GUISetState()



Run("notepad.exe")

While 1
Sleep(10)
WEnd

Func _test()

EndFunc

Func On_Exit()
    ProcessClose("notepad.exe")
    Exit
EndFunc

It's an on screen keyboard that will resemble the Metro style OSK of Win8, I'm making it to be used with with my pc controller, as it's bluetooth and hand held so I can sit on my couch and use the controller as a mouse & keyboard efficiently. It's NOT being made to be used with games, but to provide a relaxing netflix, hulu, etc experience.

My next step is to create a manner of highlighting the selected key... I'm thinking a child window withjust the border and transparent that will move around the parent window according to coordinates maybe....?

Edited by Wombat

Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Part of the problem solved by

 

The rest of the not yet been resolved.
I will try to return to this problem, and if you let it introduce these issues also in this thread, and if I manage to solve them yourself it'll try to describe what was causing the problems with which I was contending.
 
EDIT:
Provisionally, however, I'll wait, for example, talked about Melb23.
Edited by mlipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for 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 API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 - BETA * ADO.au3 UDF SMTP Mailer UDF *

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 * Best coding practices * 

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) * 

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 *

"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: 2017-06-04

Share this post


Link to post
Share on other sites

This is my code so far:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#include <_IsPressed360.au3>

$WS_EX_NOACTIVATE = 0x08000000
$MA_NOACTIVATE = 3
$MA_NOACTIVATEANDEAT = 4

HotKeySet("{ESC}", "On_Exit")
Opt("GUIOnEventMode", 1)

Global Const $hDll = DllOpen("xinput9_1_0.dll")
Global $iAdown = 0, $iBdown = 0, $iYDown = 0
Global $iLeftJoyDown = 0
Global $iLeftDown = 0, $iRightDown = 0, $iUpDown = 0, $iDownDown = 0
Global $iRightJoyRightDown = 0, $iRightJoyLeftDown = 0, $iRightJoyDown = 0, $iRightJoyUpDown = 0, $iRightJoyDownDown = 0
Global $left=@DesktopWidth/2
Global $aKeys[57] = ["Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Backspace", _
                     "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "\", _
                     "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'", "      ENTER  ", _
                     "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "   shift  ", _
                     "!@#", " ≡", " Alt ", "      SPACE      ", " : ) ", " ... ", " Ctrl "]
Global $bKeys[19] = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", _
                     "{", "}", ":", Chr(34), "<", ">", "?"]


; Create "keyboard" GUI
$hGUI = GUICreate("Test", @DesktopWidth, 269, -1, @DesktopHeight-269, $WS_POPUPWINDOW, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_NOACTIVATE))
GUISetBkColor(0, $hGUI)
GUISetCursor(16, 1, $hGUI)
WinSetTrans("Test", "", 222)
_WinAPI_ShowCursor(False)



#region 1st Row
$r1b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[0], $left-325, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[1], $left-275, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[2], $left-225, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[3], $left-175, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[4], $left-125, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[5], $left-75, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[6], $left-25, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[7], $left+25, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[8], $left+75, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[9], $left+125, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[10], $left+175, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b12Button=GUICtrlCreateLabel(@CRLF & $aKeys[11], $left+225, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b13Button=GUICtrlCreateLabel(@CRLF & $aKeys[12], $left+275, 13, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r1b14Button=GUICtrlCreateLabel(@CRLF & $aKeys[13], $left+325, 13, Default, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

#endregion

#region 2nd Row
$r2b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[14], $left-275, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[15], $left-225, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[16], $left-175, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[17], $left-125, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[18], $left-75, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[19], $left-25, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[20], $left+25, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[21], $left+75, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[22], $left+125, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[23], $left+175, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[24], $left+225, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b12Button=GUICtrlCreateLabel(@CRLF & $aKeys[25], $left+275, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r2b14Button=GUICtrlCreateLabel(@CRLF & $aKeys[26], $left+325, 63, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

#endregion

#region 3rd Row
$r3b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[27], $left-275, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[28], $left-225, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[29], $left-175, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[30], $left-125, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[31], $left-75, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[32], $left-25, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[33], $left+25, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[34], $left+75, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[35], $left+125, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[36], $left+175, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[37], $left+225, 113, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r3b12Button=GUICtrlCreateLabel(@CRLF & $aKeys[38], $left+275, 113, Default, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

#endregion

#region 4th Row
$r4b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[39], $left-225, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[40], $left-175, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[41], $left-125, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[42], $left-75, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[43], $left-25, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[44], $left+25, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[45], $left+75, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b8Button=GUICtrlCreateLabel(@CRLF & $aKeys[46], $left+125, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b9Button=GUICtrlCreateLabel(@CRLF & $aKeys[47], $left+175, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b10Button=GUICtrlCreateLabel(@CRLF & $aKeys[48], $left+225, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r4b11Button=GUICtrlCreateLabel(@CRLF & $aKeys[49], $left+275, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

#endregion

#region Final Row
$r5b1Button=GUICtrlCreateLabel(@CRLF & $aKeys[50], $left-275, 163, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r5b2Button=GUICtrlCreateLabel(@CRLF & $aKeys[51], $left-225, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r5b3Button=GUICtrlCreateLabel(@CRLF & $aKeys[52], $left-175, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r5b4Button=GUICtrlCreateLabel(@CRLF & $aKeys[53], $left-125, 213, 293, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r5b5Button=GUICtrlCreateLabel(@CRLF & $aKeys[54], $left+175, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r5b6Button=GUICtrlCreateLabel(@CRLF & $aKeys[55], $left+225, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)

$r5b7Button=GUICtrlCreateLabel(@CRLF & $aKeys[56], $left+275, 213, 43, 43, $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, 0x333333)
    #endregion



GUISetState()

Run("notepad.exe")

While 1
Sleep(10)
WEnd

Func _highlight()
If WinExists("highlight", "")=0 Then
    Local $ctrlData=ControlGetPos("Test", "", $r1b1Button)
    Local $ctrlText=ControlGetText("Test", "", $r1b1Button)
    $cGUI=GUICreate("highlight", $ctrlData[2], $ctrlData[3], $ctrlData[0]+2, $ctrlData[1]+2, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0xf55c00, "highlight")
    $hLabel=GUICtrlCreateLabel($ctrlText, 0, 0, $ctrlData[2], $ctrlData[3], $SS_CENTER)
    GUICtrlSetColor(-1, 0xffffff)
    _WinAPI_ShowCursor(False)
    WinSetTrans("highlight", "", 225)
    WinSetOnTop("highlight", "", 1)
    GUISetState()
    _Do()
Else
    _Do()
EndIf

EndFunc

Func _Do()

EndFunc

Func On_Exit()
    ProcessClose("notepad.exe")
    DllClose($hDll)
    Exit
EndFunc

and this is for backup for when I get to work

#include-once
#Region _IsPressed360
; #FUNCTION# ====================================================================================================================
; Name...........: _IsPressed360
; Description ...: Checks if key on Xbox360 controller has been pressed
; Syntax.........: _IsPressed360($iKey[, $vDLL = 'user32.dll'])
; Parameters ....: $iKey - Key to check for
; $vDLL - Handle to dll or default to user32.dll
; Return values .: True - 1
; False - 0
; Author ........: Djarlo Westmaas (with the help of scripts made by Oxin8, ezzetabi and Jon)
; Modified.......:
; Remarks .......: If calling this function repeatidly, you should open 'xinput9_1_0.dll' and pass in handle.
; Make sure to close at end of script
; If requesting state of one of the Joysticks or triggers its press value will be returned as @extended
; -32768 Y
; 1 Up
; 2 Down
; 4 Left
; 8 Right
; 16 Start
; 32 Back
; 64 LeftJoyStick
; 128 RightJoyStick
; 256 LB
; 512 RB
; 4096 A
; 8192 B
; 16384 X
; 32768 LeftTrigger (@extended 0 - 255)
; 65536 RightTrigger (@extended 0 - 255)
; 131072 LeftJoyStick-X (@extended -32768 - 32767)
; 262144 LeftJoyStick-Y (@extended -32768 - 32767)
; 524288 RightJoyStick-X (@extended -32768 - 32767)
; 1048576 RightJoyStick-Y (@extended -32768 - 32767)
; Related .......:
; Link ..........: http://www.autoitscript.com/forum/topic/133663-udf-ispressed360au3-xbox360-controller/
; Example .......: Yes
; ===============================================================================================================================
Func _IsPressed360($iKey, $vDLL = 'xinput9_1_0.dll')
Local $hStruct, $iValue = 0
$hStruct = DllStructCreate("dword;short;ubyte;ubyte;short;short;short;short")
If DllCall($vDLL, "long", "XInputGetState", "long", 0, "ptr", DllStructGetPtr($hStruct)) = 0 Then Return SetError(5, 0, False)
If @error Then Return SetError(@error, @extended, False)
Select
Case $iKey < 16385
Return Number(BitAND($iKey, DllStructGetData($hStruct, 2)) <> 0)
Case $iKey = 32768
$iValue = DllStructGetData($hStruct, 3)
If $iValue > 10 Then Return SetError(0, $iValue, 1)
Case $iKey = 65536
$iValue = DllStructGetData($hStruct, 4)
If $iValue > 10 Then Return SetError(0, $iValue, 1)
Case $iKey = 131072
$iValue = DllStructGetData($hStruct, 5)
If $iValue > 10000 Or $iValue < -10000 Then Return SetError(0, $iValue, 1)
Case $iKey = 262144
$iValue = DllStructGetData($hStruct, 6)
If $iValue > 10000 Or $iValue < -10000 Then Return SetError(0, $iValue, 1)
Case $iKey = 524288
$iValue = DllStructGetData($hStruct, 7)
If $iValue > 10000 Or $iValue < -10000 Then Return SetError(0, $iValue, 1)
Case $iKey = 1048576
$iValue = DllStructGetData($hStruct, 8)
If $iValue > 10000 Or $iValue < -10000 Then Return SetError(0, $iValue, 1)
EndSelect
Return SetError(0, $iValue, 0)
EndFunc ;==>_IsPressed360
#EndRegion _IsPressed360

 

again, this is NOT for gaming, I have Xpadder for mapping controls, this is for creating an efficient way to use the xbox360 controller as a mouse+keyboard as part of my home theater set up.

I would like to know if anyone knows how I can find the value for the guide(center) button, all across the internet its infamouse for being an uncontrollable brat...

In this ancient thread: '?do=embed' frameborder='0' data-embedContent>>  using the example, with some cleaning, the guide button returns a value of 1024 but it says it is the "A" button... If anyone can solve this it's the autoit community (<--- my personal opinion)

If this is riding too close to breaking the terms and conditions on game manipulation, I'll concentrate my questions solely on the gui and try to handle the controller integration on my own. But what i'm moving towards is a verry custom home theater set up after taxes and this software and the controller are the central pieces.

 

anyways, with my current code, will I need to hand write the coords of each control or is there a way to detect the control under the child gui?, any critiques or tips on improving my code is always welcome.

... until tomorrow, g'night ladies and gents


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

Wombat,

 

If this is riding too close to breaking the terms and conditions on game manipulation

You are in the clear as far as that goes - but I am concerned by the existence of a virtual keyboard. As your code is very incomplete, what role will that play in this script? :huh:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

#8 ·  Posted (edited)

Wombat,

 

You are in the clear as far as that goes - but I am concerned by the existence of a virtual keyboard. As your code is very incomplete, what role will that play in this script? :huh:

M23

 

 

It will extend the controllers ability to enter data, and function as an important piece in the central concept I'm working on.

 

I'm building a custom pc to use as a Steam Machine, it will be dual boot 1tb to Windows and 1tb to SteamOS. Until Valve works through their many bugs in the new OS I will be using Windows as a "Fog Machine" :muttley:  to power my home entertainment system. I do not want just another pc sitting in my living room that I need another mouse+keyboard for or have to move the dongle back and forth or even worse have to buy a switch for it. So instead I'm going to put together software that will make it as efficient and accessible as possible from a controller in said living room.

 

To do this the controller must be able to:

 

(a) Be able to control the mouse and move it fluidly around the screen without much effort.

- This will be accomplished by two combined means;

(a1) Setting up a joystick to move the mouse around with smart speed (the farther you push the joystick to the edge the faster the mouse will move)

(a2) Setting a bumper(or bumpers) so that there are specified "HotSpots" on the screen (possibly the four corners of the screen and/or maybe move the mouse to the controls usually highlighted by

"tabbing" through a window to reach its controls)

( b )  Be able to quickly and efficiently enter text, format text, and alter text solely using the controller.

- This will be accomplished by a virtual keyboard;

(b1) Creating a virtual keyboard that does NOT interrupt the task at hand but that sits on top of all other windows when active.

(b2) Implementing extended functionality via settings, word prediction, spell check, and text formatting.

(b3) Designing a highly responsive, low cpu payload, and fast interface.

(c ) Be able to quickly access and navigate the OS without issue or henderance.

- This will be accomplished by creating a central app that works as a HUB for all actions possible with the controller;

(c1) Create an intuitive design that is easily understandable and navigable to any user.

(c2) Implement custom settings and preferences which can be quickly and easily edited and implemented without change to the base code.

(c3) Remove the requirement for heavy navigation of the OS and use the HUB as a central station where almost any application can be ran, or task can be completed.

Edited by Wombat

Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

Wombat,

So just to be sure, a cursor of some sort driven by the controller will select keys from the VKB for use elsewhere - you are not scanning an actual keyboard at all? :huh:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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 physical keyboard, the VKB will have a "cursor" that moves over the keys "highlighting" them to show what will be entered when another button is pressed. So when they click anywhere where text can be entered the VKB will appear. if you bind the function "_highlight" to a key and activate it you'll see the child gui appear which is the "cursor".


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

Womba,

Thank you for that clarification. :thumbsup:

Now that is settled, here is the code I mentioned to get the font size to match the GUI size: :)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; Set resize mode for controls
Opt("GUIResizeMode", $GUI_DOCKAUTO)


$hGUI = GUICreate("Test", 400, 200, 100, 100, BitOR($WS_SIZEBOX, $WS_SYSMENU))

$cButton_1 = GUICtrlCreateButton("Test 1", 10, 10, 80, 30)
$cButton_2 = GUICtrlCreateButton("Test 2", 10, 50, 80, 30)

; Once all the controls have been created use this to get the final ControlID
$iLast_Control = GUICtrlCreateDummy() ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

GUISetState()

GUIRegisterMsg($WM_SIZING, "_WM_SIZING")
GUIRegisterMsg($WM_SIZE, "_WM_SIZE")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _WM_SIZING($hWnd, $iMsg, $wParam, $lParam)

    #forceref $iMsg, $wParam, $wParam

    If $hWnd = $hGUI Then

        Local $iNew_H, $iNew_W

        Local $sRect = DllStructCreate("Int[4]", $lParam)
        Local $iLeft = DllStructGetData($sRect, 1, 1)
        Local $iTop = DllStructGetData($sRect, 1, 2)
        Local $iRight = DllStructGetData($sRect, 1, 3)
        Local $iBottom = DllStructGetData($sRect, 1, 4)
        ; Keep the same aspect ratio
        Switch $wParam ; drag side or corner
            Case 1, 2 ; $WMSZ_LEFT, $WMSZ_RIGHT
                $iNew_H = Int(($iRight - $iLeft) * 200 / 400)
                DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 2) + $iNew_H, 4)
            Case Else
                $iNew_W = Int(($iBottom - $iTop) * 400 / 200)
                DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 1) + $iNew_W, 3)
        EndSwitch
    EndIf

EndFunc

Func _WM_SIZE($hWnd, $iMsg, $wParam, $lParam)

    #forceref $iMsg, $wParam, $lParam

    If $hWnd = $hGUI Then
        ; Calculate required font size
        Local $aGUI_Size = WinGetClientSize($hGUI)
        Local $iFontSize = Int(2 * (.25 + (8 * $aGUI_Size[0] / 500))) / 2 ; A basic c
        ; Reset font size for all controls on main GUI
        For $i = 0 To $iLast_Control ; And this makes sure that we cover them all <<<<<<<<<<<<<<<<
            GUICtrlSetFont($i, $iFontSize)
        Next
    EndIf

EndFunc   ;==>_WM_SIZE
M23

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

Womba,

Thank you for that clarification. :thumbsup:

Now that is settled, here is the code I mentioned to get the font size to match the GUI size: :)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; Set resize mode for controls
Opt("GUIResizeMode", $GUI_DOCKAUTO)


$hGUI = GUICreate("Test", 400, 200, 100, 100, BitOR($WS_SIZEBOX, $WS_SYSMENU))

$cButton_1 = GUICtrlCreateButton("Test 1", 10, 10, 80, 30)
$cButton_2 = GUICtrlCreateButton("Test 2", 10, 50, 80, 30)

; Once all the controls have been created use this to get the final ControlID
$iLast_Control = GUICtrlCreateDummy() ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

GUISetState()

GUIRegisterMsg($WM_SIZING, "_WM_SIZING")
GUIRegisterMsg($WM_SIZE, "_WM_SIZE")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _WM_SIZING($hWnd, $iMsg, $wParam, $lParam)

    #forceref $iMsg, $wParam, $wParam

    If $hWnd = $hGUI Then

        Local $iNew_H, $iNew_W

        Local $sRect = DllStructCreate("Int[4]", $lParam)
        Local $iLeft = DllStructGetData($sRect, 1, 1)
        Local $iTop = DllStructGetData($sRect, 1, 2)
        Local $iRight = DllStructGetData($sRect, 1, 3)
        Local $iBottom = DllStructGetData($sRect, 1, 4)
        ; Keep the same aspect ratio
        Switch $wParam ; drag side or corner
            Case 1, 2 ; $WMSZ_LEFT, $WMSZ_RIGHT
                $iNew_H = Int(($iRight - $iLeft) * 200 / 400)
                DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 2) + $iNew_H, 4)
            Case Else
                $iNew_W = Int(($iBottom - $iTop) * 400 / 200)
                DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 1) + $iNew_W, 3)
        EndSwitch
    EndIf

EndFunc

Func _WM_SIZE($hWnd, $iMsg, $wParam, $lParam)

    #forceref $iMsg, $wParam, $lParam

    If $hWnd = $hGUI Then
        ; Calculate required font size
        Local $aGUI_Size = WinGetClientSize($hGUI)
        Local $iFontSize = Int(2 * (.25 + (8 * $aGUI_Size[0] / 500))) / 2 ; A basic c
        ; Reset font size for all controls on main GUI
        For $i = 0 To $iLast_Control ; And this makes sure that we cover them all <<<<<<<<<<<<<<<<
            GUICtrlSetFont($i, $iFontSize)
        Next
    EndIf

EndFunc   ;==>_WM_SIZE
M23

 

 

That is actually very impressive


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

Wombat,

I must admit I am quite pround of that bit of code. :>

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

#14 ·  Posted (edited)

So what would be the best way to implement the highlight function? The child GUI is nice but I would have to compile all the coordinates of the buttons and then check the position of the child gui against the buttons coords... is there a better way/more efficient way?

Edit:

So I'm thinking i could collect the control coords with something like this:

For $i = 1 to 57
  $ButtonCoords=ControlGetPos($hGUI, "", $aKeys[$i])
  _ArrayAdd($XBC, $ButtonCoords[0])
  _ArrayAdd($YBC, $ButtonCoords[1])
Next

but $aKeys[57] does not contain the control but instead the text of the controls.... so I'm lost

Edit:

maybe something like this:

Func WinListChildren($hWnd, ByRef $avArr)
    If UBound($avArr, 0) <> 2 Then
        Local $avTmp[10][2] = [[0]]
        $avArr = $avTmp
    EndIf

    Local $hChild = _WinAPI_GetWindow($hWnd, $GW_CHILD)

    While $hChild
        If $avArr[0][0]+1 > UBound($avArr, 1)-1 Then ReDim $avArr[$avArr[0][0]+10][2]
        $avArr[$avArr[0][0]+1][0] = $hChild
        $avArr[$avArr[0][0]+1][1] = _WinAPI_GetWindowText($hChild)
        $avArr[0][0] += 1
        WinListChildren($hChild, $avArr)
        $hChild = _WinAPI_GetWindow($hChild, $GW_HWNDNEXT)
    WEnd

    ReDim $avArr[$avArr[0][0]+1][2]
EndFunc
Edited by Wombat

Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

OK so here's an update:

I was able to retreive the id, and text of the controls in the gui. I then split them into two seperate array's with the follwoing functions:

Func WinListChildren($hWnd, ByRef $avArr)
    If UBound($avArr, 0) <> 2 Then
        Local $avTmp[10][2] = [[0]]
        $avArr = $avTmp
    EndIf
    Local $hChild = _WinAPI_GetWindow($hWnd, $GW_CHILD)
    While $hChild
        If $avArr[0][0] + 1 > UBound($avArr, 1) - 1 Then ReDim $avArr[$avArr[0][0] + 10][2]
        $avArr[$avArr[0][0] + 1][0] = $hChild
        $avArr[$avArr[0][0] + 1][1] = _WinAPI_GetWindowText($hChild)
        $avArr[0][0] += 1
        WinListChildren($hChild, $avArr)
        $hChild = _WinAPI_GetWindow($hChild, $GW_HWNDNEXT)
    WEnd
    ReDim $avArr[$avArr[0][0] + 1][2]
EndFunc   ;==>WinListChildren
Func _SplitChildren()
    Global $ChildID[UBound($avChildren)], $ChildText[UBound($avChildren)]
For $i = 0 To UBound($avChildren) -1
    $ChildID[$i] = $avChildren[$i][0]
    $ChildText[$i] = $avChildren[$i][1]
Next
EndFunc

I don't like that the split function declares a global variable but I was unable to get it to function correctly without doing so...


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

So I'm now stuck, I need to get the coords of the controls and compare the child gui's coords with an array of the control coords and react accordingly.

From there the child GUI would compare it's x&y with the available x&y's and move to the appropriate coordinates. Is this a less than optimal way of achieving a highlight function? Is there a better way?


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

Share this post


Link to post
Share on other sites

No takers?


Just look at us.
Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner


The internet is our one and only hope at a truly free world, do not let them take it from us...

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