Modify

Opened 17 years ago

Closed 17 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 by Gary, 17 years ago

Resolution: No Bug
Status: newclosed

See Ticket #45

Modify Ticket

Action
as closed The ticket will remain with no owner.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.