Jump to content

Question about GUISetAccelerators and $WS_CHILD


Recommended Posts

Hello there,

I am trying to define GUISetAccelerators on the child window but i think there is something which i can't understand to solve the issue,

here is a sample code

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode",1)
Global $main,$child

$main = GUICreate("Form1", 633, 447, 192, 200)
GUISetState()

$child = GUICreate("Form1", 200, 200, 0, 0,$WS_CHILD,-1,$main)
$b = GUICtrlCreateButton("test button",0,0)
GUICtrlSetOnEvent($b,"ENTER")
Dim $k[1][2] = [ ["{ENTER}",$b] ]
GUISetAccelerators($k,$child)
GUISetState()


While 1
    Sleep(100)
WEnd

Func ENTER()
    ConsoleWrite("> Working at "&@GUI_WinHandle & $child)
EndFunc

73 108 111 118 101 65 117 116 111 105 116

Link to comment
Share on other sites

The child window does not have focus when you start the script so pressing enter does nothing , if you click on the button the child gui gains focus and it works, if you set the focus to the button like below it works straight away.

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode",1)
Global $main,$child

$main = GUICreate("Form1", 633, 447, 192, 200)
GUISetState()

$child = GUICreate("Form1", 200, 200, 0, 0,$WS_CHILD,-1,$main)
$b = GUICtrlCreateButton("test button",0,0)
GUICtrlSetOnEvent($b,"ENTER")
Dim $k[1][2] = [ ["{ENTER}",$b] ]
GUISetAccelerators($k,$child)
GUISetState()
GUICtrlSetState ($b, $GUI_FOCUS)

While 1
    Sleep(100)
WEnd

Func ENTER()
    ConsoleWrite("> Working at "&@GUI_WinHandle & $child & @CR)
EndFunc
GDIPlusDispose - A modified version of GDIPlus that auto disposes of its own objects before shutdown of the Dll using the same function Syntax as the original.EzMySql UDF - Use MySql Databases with autoit with syntax similar to SQLite UDF.
Link to comment
Share on other sites

The child window does not have focus when you start the script so pressing enter does nothing , if you click on the button the child gui gains focus and it works, if you set the focus to the button like below it works straight away.

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode",1)
Global $main,$child

$main = GUICreate("Form1", 633, 447, 192, 200)
GUISetState()

$child = GUICreate("Form1", 200, 200, 0, 0,$WS_CHILD,-1,$main)
$b = GUICtrlCreateButton("test button",0,0)
GUICtrlSetOnEvent($b,"ENTER")
Dim $k[1][2] = [ ["{ENTER}",$b] ]
GUISetAccelerators($k,$child)
GUISetState()
GUICtrlSetState ($b, $GUI_FOCUS)

While 1
    Sleep(100)
WEnd

Func ENTER()
    ConsoleWrite("> Working at "&@GUI_WinHandle & $child & @CR)
EndFunc

Thanks for your reply.

What will you say about this condition ?

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode",1)
Global $main,$child

$main = GUICreate("Form1", 633, 447, 192, 200)
GUISetState()

$child = GUICreate("Form1", 200, 200, 0, 0,$WS_CHILD,-1,$main)
$i = GUICtrlCreateInput("Enter is not working ???",0,0)
$b = GUICtrlCreateDummy()
GUICtrlSetOnEvent($b,"ENTER")
Dim $k[1][2] = [ ["{ENTER}",$b] ]
GUISetAccelerators($k,$child)
GUISetState()
GUICtrlSetState ($i, $GUI_FOCUS)

While 1
    Sleep(100)
WEnd

Func ENTER()
    ConsoleWrite("> Working at "&@GUI_WinHandle & $child & @CR)
EndFunc

if you delete the $child gui & set GUISetAccelerators($k,$main) it will work perfect.

What is solution for this type of situations ?

73 108 111 118 101 65 117 116 111 105 116

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...