BAM5 Posted July 27, 2012 Posted July 27, 2012 So I'm making this gui with an embedded IE object. It all goes well until I add some functionality, one in particular and it's a big one, the window will be in the same place and same size as you left it when you last exited the program. No big deal until I found that when I resize the window programmatically the controls below the IE Object seemingly disappear. Look a little closer and I find that they're not invisible, just white. I messed around and found out that it has something to do with having the style $WS_CLIPCHILDREN on the gui. I take it off and the controls show up no problem, but then the whole IE object freezes so that's definitely not the solution I'm looking for. I've tried searching the forums, the internet, and the help file, but I can't find the answer to this evil problem. One thing I noticed was that if I resized the window just the slightest with the mouse all the controls would reappear, or if I hovered on them they parts of the control would reappear piece by piece. So I tried using some window redraw / repaint functions, I've tried several different winmove functions, and I even went so far as to try to emulate resizing the window through the mouse by using the _SendMessage function to send the individual WM_ENTERSIZEMOVE, WM_SIZING, WM_SIZE, and WM_EXITSIZEMOVE messages to the window, but to no avail. However if I set a certain size of window with the WM_SIZE message that wasn't the window size it would show up in the window with a bunch of whitespace because it wasn't taking up the whole window, but that isn't germane and I digress.If anyone knows any rerendering messages I could send the the window please post them here! I'm willing to try anything at the moment. I assume there's a message I'm missing in the resizing emulation since it isn't coming out right. Oh, another thing that would be helpful is if someone knew how to monitor all the messages going to my gui, instead of just specific individual messages defined by the GUIRegisterMsg function.Below is a far shortened example of my code along with the screen shot of it with a few citations.expandcollapse popup#include <IE.au3> #include <Array.au3> #include <WinAPI.au3> #include <Constants.au3> #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $name = @UserName $opts = " |Me ("&$name&")" $oIE = _IECreateEmbedded() $Main = GUICreate("Example of Frustration", 795, 610, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME,$WS_CLIPCHILDREN)) $ObjectIE = GUICtrlCreateObj($oIE, 8, 8, 777, 561) GUICtrlSetResizing(-1, $GUI_DOCKTOP+$GUI_DOCKRIGHT+$GUI_DOCKBOTTOM+$GUI_DOCKLEFT) GUICtrlCreateLabel("Follow", 8, 580, 34, 17, $WS_CLIPSIBLINGS) GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKBOTTOM+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $ComboFollow = GUICtrlCreateCombo("", 48, 578, 145, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$WS_CLIPSIBLINGS)) $default = " " GUICtrlSetData(-1, $opts, $default) GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKBOTTOM+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $SliderOpacity = GUICtrlCreateSlider(280, 576, 150, 25) GUICtrlSetLimit(-1, 255, 55) GUICtrlSetData(-1, 255) GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKBOTTOM+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $ButtonFullscreen = GUICtrlCreateButton("Faux Fullscreen", 680, 576, 107, 25, $WS_CLIPSIBLINGS) GUICtrlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKBOTTOM+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) _IENavigate($oIE, "http://google.com") GUISetState(@SW_SHOW) _WinAPI_MoveWindow($Main, 100, 100, 450, 350) While 1 If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit WEndThanks for your time!-Brian [center]JSON Encoding UDF[/center]
JohnOne Posted July 27, 2012 Posted July 27, 2012 Off the top of my head, all I can think of is to use _WinAPI_RedrawWindow() after resize. Although there might be a style that auto does that. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
PhoenixXL Posted July 27, 2012 Posted July 27, 2012 Although there might be a style that auto does that.Yup that is $WS_EX_COMPOSITED 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.
BAM5 Posted July 29, 2012 Author Posted July 29, 2012 (edited) That did it! (Sort of, see below) Thank you so much PhoenixXL I searched all over but to no avail not having a clue what to search for. You've made my day. Jon: Yeah, I tried that but it didn't work, maybe it would have if I passed it the right combination of flags. Thank you both for your help. Although I would like furthur input. When I add that style, I didn't notice at first, but the IE object starts to flicker really bad when I move the cursor over it, possibly due to heavy rendering process of the frame not being able to draw fast enough? Is there a way for me to tell it to draw over the old image instead of setting all the pixels to background color and then drawing over that? Edited July 29, 2012 by BAM5 [center]JSON Encoding UDF[/center]
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