Modify

Opened 11 years ago

Closed 11 years ago

#627 closed Bug (No Bug)

Using a re-sizable GUI and _GUICtrlStatusBar_EmbedControl cause AutoIt to hard-crash.

Reported by: anonymous Owned by:
Milestone: Component: AutoIt
Version: 3.2.12.1 Severity: None
Keywords: Cc:

Description

Creating a GUI interface that is re-sizable (BitOR($WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_TILEDWINDOW)) and then using _GUICtrlStatusBar_EmbedControl() this will make AutoIt hard crash

Tested for AutoIt v. 3.2.12.1 and 3.2.13.9

Example

#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <SendMessage.au3>

Opt('MustDeclareVars', 1)

$Debug_SB = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work



Local $hGUI, $hProgress, $hInput, $input, $progress, $hStatus
Local $aParts[4] = [80, 160, 300, -1]

; Create GUI
$hGUI = GUICreate("StatusBar Embed Control", 400, 300, -1, -1, BitOR($WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_TILEDWINDOW))

;===============================================================================
; defaults to 1 part, no text
$hStatus = _GUICtrlStatusBar_Create ($hGUI)
_GUICtrlStatusBar_SetMinHeight ($hStatus, 20)

;===============================================================================
GUISetState()

; Initialize parts
_GUICtrlStatusBar_SetParts ($hStatus, $aParts)
_GUICtrlStatusBar_SetText ($hStatus, "Part 1")
_GUICtrlStatusBar_SetText ($hStatus, "Part 2", 1)

; Embed a progress bar
If @OSTYPE = "WIN32_WINDOWS" Then
	$progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
	$hProgress = GUICtrlGetHandle($progress)
	_GUICtrlStatusBar_EmbedControl ($hStatus, 2, $hProgress)
Else
	$progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_MARQUEE) ; marquee works on Win XP and above
	$hProgress = GUICtrlGetHandle($progress)
	_GUICtrlStatusBar_EmbedControl ($hStatus, 2, $hProgress)
	;_SendMessage($hProgress, $PBM_SETMARQUEE, True, 200) ; marquee works on Win XP and above
EndIf

$input = GUICtrlCreateInput("This is Embeded", 0, 0)
$hInput = GUICtrlGetHandle($input)
_GUICtrlStatusBar_EmbedControl ($hStatus, 3, $hInput, 3)

GUIRegisterMsg($WM_SIZE, "WM_SIZE")

; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()


; Resize the status bar when GUI size changes
Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
    _GUICtrlStatusBar_Resize ($hStatus)
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_SIZE

Attachments (0)

Change History (1)

comment:1 Changed 11 years ago by Gary

  • Resolution set to No Bug
  • Status changed from new to closed

See Ticket #45

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

Action
as closed The ticket will remain with no owner.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.