Sign in to follow this  
Followers 0
Clark

Restricting input to a window

6 posts in this topic

Sometimes I just have no idea how to even start to get something to work.

Ok, so I have a main form, which I create with GUICreate. On this form there is a button, which pops up another window which has some radio buttons on it (for setting filters on the main form). I create this popup window using

$frmFilter = GUICreate("Filter", 444, 283,-1,-1,BitOR($WS_BORDER,$WS_POPUP)) This form also has on it (apart from the radio buttons) two buttons, "cancel" and "apply"

Now, I would like for the user to not be able to click outside this window and only be able to exit this form using the cancel and apply buttons. It should not preclude them clicking outside for other programmes, but prevent them clicking in the main form which is in the background.

Is there a simple way to do this? Or do I need to somehow build it into the main loop logic? Or perhaps track mouse movements?

I've looked at the Styles and Extended Styles, but none of them seems to do this in a way that is obvious to me, without trying each of them in turn with combinations.

I have searched for an answer in the forums, however, it is hard to know what to search for when I don't know what I am looking for.

TIA

Clark

Share this post


Link to post
Share on other sites

Use WinSetState("WindowTitleHere", "", @SW_DISABLE), then the GUI is disabled and even if they do click on it, it won't do anything. Or you could just use GUISetState(@SW_HIDE, $GUIHandle) to hide the window until you're done with the options window.

1 person likes this

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

_MouseTrap()

But I don't think this is the right way!

1 person likes this

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots.
So far, the Universe is winning.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Pass as a parameter a handle to the parent window

GUICreate($LngAbout, 220, 330, -1, -1, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_POPUP), -1, $hGui)

http://pastebin.com/fWcPjjfP

Edited by AZJIO
1 person likes this

Share this post


Link to post
Share on other sites

Thank you people,

Those suggestions work fine for me.

I didn't realise that using WinSetState would give such a better result for me than GUICtrlSetState, which I tried but was not useful.

Share this post


Link to post
Share on other sites

It should be GUISetState not GUICtrlSetState

#include <WindowsConstants.au3>

$hParent = GUICreate(@ScriptName)
GUISetState()
GUISetState(@SW_DISABLE)
;Your Controls...


$hChild = GUICreate("Child", 50, 50, -1, -1, -1, -1, $hParent)
GUISetState()

Do
Sleep(10)
Until GUIGetMsg() = -3
Regards :)
1 person likes this

My code:

PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.

Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners.

MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. 

Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression.

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