AndreyS Posted March 2, 2015 Posted March 2, 2015 How to make so that the Label control is always on top of all other controls(including pictures and RTF), regardless of their moves, and changes? Function GUICtrlSetState($Label, $GUI_ONTOP) does not work. Thanks!
reb Posted March 2, 2015 Posted March 2, 2015 try GUICtrlSetState($Label, "",$GUI_ONTOP) $GUI_ONTOP is an extended style GUICtrlCreateLabel ( "text", left, top [, width [, height [, style = -1 [, exStyle = -1]]]] ) REB MEASURE TWICE - CUT ONCE
AndreyS Posted March 2, 2015 Author Posted March 2, 2015 try GUICtrlSetState($Label, "",$GUI_ONTOP) error: GUICtrlSetState() [built-in] called with wrong number of args.
funkey Posted March 3, 2015 Posted March 3, 2015 (edited) You need GUICtrlSetStyle and not GUICtrlSetState. Edit: And $WS_EX_TOPMOST Edited March 3, 2015 by funkey Programming today is a race between software engineers striving tobuild bigger and better idiot-proof programs, and the Universetrying to produce bigger and better idiots.So far, the Universe is winning.
AndreyS Posted March 3, 2015 Author Posted March 3, 2015 You need GUICtrlSetStyle It does not help! Tested initially. When I create a control picture it becomes a on top of label.
lorenkinzel Posted March 3, 2015 Posted March 3, 2015 You should post what you've tried. Some of these guys could spot your problem in their sleep, but not without posted code. #include <GUIConstantSex.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Form1", 615, 438, 192, 124) ;$Input1 = GUICtrlCreateInput("Input1", 168, 144, 73, 21); >>>>>>>>>>>>>>>>>picture is on top if you use this one $Pic1 = GUICtrlCreatePic("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg", 96, 88, 257, 129);change filepath to suit GUICtrlSetState($Pic1, $GUI_DISABLE) $Input1 = GUICtrlCreateInput("Input1", 168, 144, 73, 21); >>>>>>>>>>>>>>>>>>input is on top if you use this one GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd
AndreyS Posted March 4, 2015 Author Posted March 4, 2015 Ok! Please: #include <GuiRichEdit.au3> #include <Constants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Dim $left=10, $top=10 $hGUI = GUICreate("", 600, 400) ;Sequence of creation controls can not be changed! $Label1 = GUICtrlCreateLabel("Test", $left, $top) $RTF=_GUICtrlRichEdit_Create($hGUI,"", 70, 10 , 100 , 100) $Pic = GUICtrlCreatePic("C:\Program Files\AutoIt3\Examples\GUI\logo4.gif", 200, 10, 100, 50) HotKeySet("^{Right}","Move") GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($RTF) Exit EndSelect WEnd Func Move() $left+=5 GUICtrlSetPos($Label1, $left) EndFunc How to make that label was always visible when moving over all control?
BrewManNH Posted March 4, 2015 Posted March 4, 2015 Try this: expandcollapse popup#include <GuiRichEdit.au3> #include <Constants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Dim $left = 10, $top = 10 $hGUI = GUICreate("", 600, 400) ;Sequence of creation controls can not be changed! $Label1 = GUICtrlCreateLabel("Test", $left, $top, 20, 20, -1, $WS_EX_TOPMOST) $hLabel = GUICtrlGetHandle($Label1) $RTF = _GUICtrlRichEdit_Create($hGUI, "", 70, 10, 100, 100) $Pic = GUICtrlCreatePic("C:\Users\Bob\SkyDrive\Beta\AutoIt3\Examples\GUI\logo4.gif", 200, 10, 100, 50) GUICtrlSetState(-1, $GUI_DISABLE) HotKeySet("^{Right}", "Move") GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($RTF) Exit EndSelect WEnd Func Move() $left += 5 _WinAPI_SetWindowPos($hLabel, $HWND_TOPMOST, $left, $top, 20, 20, $SWP_NOZORDER) ;~ GUICtrlSetPos($Label1, $left) EndFunc ;==>Move 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 GudeHow 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
lorenkinzel Posted March 4, 2015 Posted March 4, 2015 (edited) This worked for me. WinXP, AutoIt Version: 3.3.9.22 (Beta) Edit: granted it's a hack & others can point you in a better direction; but it works. #include <GuiRichEdit.au3> #include <Constants.au3> #include <GUIConstantSex.au3> #include <WindowsConstants.au3> Global $left = 10, $top = 10;the term "Dim" is on the outs. Global is the way. Ask BrewmanNH $hGUI = GUICreate("", 600, 400, -1, -1, $WS_SIZEBOX, $WS_EX_COMPOSITED);$WS_SIZEBOX, $WS_EX_COMPOSITED did it. with other styles, first created is on top. ;Makes no sense (to me) but it is so. ;Sequence of creation controls can not be changed! $Label1 = GUICtrlCreateLabel("Test", $left, $top) $RTF = _GUICtrlRichEdit_Create($hGUI, "", 70, 10, 100, 100) $Pic = GUICtrlCreatePic("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water lilies.jpg", 200, 10, 100, 50);always a nice picture HotKeySet("^{Right}", "Move") GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($RTF) Exit EndSelect WEnd Func Move() $left += 5 GUICtrlSetPos($Label1, $left) EndFunc ;==>Move Edited March 4, 2015 by lorenkinzel
AndreyS Posted March 4, 2015 Author Posted March 4, 2015 Wow! Thank you very much for the feedback and examples! The second method is very simple and I have works well in my program. It took just add a property form: $WS_EX_COMPOSITED. The first method is also good, but for some reason it does not work with transparency: GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT).
lorenkinzel Posted March 4, 2015 Posted March 4, 2015 The "first method" that BrewmanNH showed you deals with the actual problem. My little hack only deals with the symptoms. Whenever possible, it's good to learn the how & why of coding rather than little tricks that somehow make it work.
BrewManNH Posted March 4, 2015 Posted March 4, 2015 Just a word of warning about using a transparent label. If you do that and the label starts over another control, it totally screws up your label. Change the $left = 10 to $left = 200 and then move the label and you'll see what I mean. 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 GudeHow 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
AndreyS Posted March 4, 2015 Author Posted March 4, 2015 Aah! Yes, an interesting effect! )) The background of the label to become a background that is underneath. And how to fix it in your code so that the background was always transparent?
BrewManNH Posted March 4, 2015 Posted March 4, 2015 Native Windows controls don't seem to permit true transparency, so you're probably not going to be able to achieve what you want that way. You might have to use a GDI+ image with transparency as your label. 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 GudeHow 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
AndreyS Posted March 4, 2015 Author Posted March 4, 2015 Yeah like that ?! Yes, it is more difficult way! Well that found an easier option.
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