Modify ↓
      
        #9 closed Bug (Fixed)
_GUICtrlRebar_AddToolBarBand(): Button height clipped when Toolbar added to Rebar
| Reported by: | rover | Owned by: | Gary | 
|---|---|---|---|
| Milestone: | 3.2.11.0 | Component: | Standard UDFs | 
| Version: | 3.2.10.0 | Severity: | |
| Keywords: | XP SP2 X86 | Cc: | 
Description
Reversed _WinAPI_LoWord and _WinAPI_HiWord for setting rebar height in function _GUICtrlRebar_AddToolBarBand() in include GuiReBar.au3
Reproducer script
; version 3.2.9.10 and 3.2.9.14
#include <GuiConstantsEx.au3>
#include <GuiToolbar.au3>
#include <GuiReBar.au3>
#Include <GuiImageList.au3>
Opt('MustDeclareVars', 1)
_Main()
Func _Main()
	Local $hGUI, $hToolbar, $hReBar, $btn1, $btn2, $aStrings[4], $msg
	Local Enum $idNew = 1000, $idOpen, $idSave, $idHelp
	$hGUI = GUICreate("Toolbar", 400, 200)
	$hReBar = _GUICtrlReBar_Create($hgui, BitOR($RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))
	$hToolbar = _GUICtrlToolbar_Create ($hGUI, BitOR($TBSTYLE_FLAT, $CCS_NORESIZE, $CCS_NOPARENTALIGN))
	_GUICtrlToolbar_SetButtonWidth($hToolbar, 32, 40)	; limit button width (force text to word wrap to second row)
	_GUICtrlToolbar_SetMaxTextRows($hToolbar, 2)		; allow two rows of text 
	_GUICtrlToolbar_AddBitmap ($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)
	$aStrings[0] = _GUICtrlToolbar_AddString ($hToolbar, "&New File")
	$aStrings[1] = _GUICtrlToolbar_AddString ($hToolbar, "&Open File")
	$aStrings[2] = _GUICtrlToolbar_AddString ($hToolbar, "&Save File")
	$aStrings[3] = _GUICtrlToolbar_AddString ($hToolbar, "&Help")
	_GUICtrlToolbar_AddButton ($hToolbar, $idNew, $STD_FILENEW, $aStrings[0])
	_GUICtrlToolbar_AddButton ($hToolbar, $idOpen, $STD_FILEOPEN, $aStrings[1])
	_GUICtrlToolbar_AddButton ($hToolbar, $idSave, $STD_FILESAVE, $aStrings[2])
	_GUICtrlToolbar_AddButtonSep ($hToolbar)
	_GUICtrlToolbar_AddButton ($hToolbar, $idHelp, $STD_HELP, $aStrings[3])
	
	$btn1 = GUICtrlCreateButton("Add ToolBarBand Fixed",50, 100, 150,25)
	$btn2 = GUICtrlCreateButton("Add ToolBarBand v3.2.9.14",50, 150, 150,25)
	;_GUICtrlToolbar_SetButtonSize($hToolbar, 60, 40)
	GUISetState()
	Do
		$msg = GUIGetMsg()
		Switch $msg
			Case $btn1 ; AddToolBarBand with fix
				_GUICtrlRebar_DeleteBand($hReBar, 0)
				_MOD_GUICtrlReBar_AddToolBarBand($hReBar, $hToolbar, "", 0)
			Case $btn2 ; AddToolBarBand v3.2.9.14
				_GUICtrlRebar_DeleteBand($hReBar, 0)
				_GUICtrlReBar_AddToolBarBand($hReBar, $hToolbar, "", 0)
		EndSwitch
	Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main
Func _MOD_GUICtrlRebar_AddToolBarBand($hwndRebar, $hwndToolbar, $sText = "", $iIndex = -1, $fStyle = -1)
	If $Debug_RB Then _GUICtrlRebar_ValidateClassName($hwndRebar)
	If $Debug_RB Then _GUICtrlRebar_ValidateClassName($hwndToolbar, "ToolbarWindow32")
	Local $tBuffer, $pBuffer, $dwBtnSize, $NumButtons, $iDefaultWidth
	Local $pMemory, $tMemMap, $pText, $iResult
	Local $tINFO = DllStructCreate($tagREBARBANDINFO)
	Local $pINFO = DllStructGetPtr($tINFO)
	Local $iBuffer = StringLen($sText) + 1
	Local $iSize = DllStructGetSize($tINFO)
	If $fStyle <> -1 Then
		$fStyle = BitOR($fStyle, $RBBS_CHILDEDGE, $RBBS_GRIPPERALWAYS)
	Else
		$fStyle = BitOR($RBBS_CHILDEDGE, $RBBS_GRIPPERALWAYS)
	EndIf
	;// Initialize band info used by the toolbar
	DllStructSetData($tINFO, "cbSize", $iSize)
	DllStructSetData($tINFO, "fMask", BitOR($RBBIM_STYLE, $RBBIM_TEXT, $RBBIM_CHILD, $RBBIM_CHILDSIZE, $RBBIM_SIZE, $RBBIM_ID))
	DllStructSetData($tINFO, "fStyle", $fStyle)
	
	;// Get the height of the toolbar.
	$dwBtnSize = _SendMessage($hwndToolbar, $TB_GETBUTTONSIZE)
	; Get the number of buttons contained in toolbar for calculation
	$NumButtons = _SendMessage($hwndToolbar, $TB_BUTTONCOUNT)
	$iDefaultWidth = $NumButtons * _WinAPI_LoWord($dwBtnSize) ; was _WinAPI_HiWord($dwBtnSize)
	
	;// Set values unique to the band with the toolbar.
	$tBuffer = DllStructCreate("char Text[" & $iBuffer & "]")
	DllStructSetData($tBuffer, "Text", $sText)
	$pBuffer = DllStructGetPtr($tBuffer)
	DllStructSetData($tINFO, "hwndChild", $hwndToolbar)
	DllStructSetData($tINFO, "cyChild", _WinAPI_HiWord($dwBtnSize)) ; was _WinAPI_LoWord($dwBtnSize)
	DllStructSetData($tINFO, "cxMinChild", $iDefaultWidth)
	DllStructSetData($tINFO, "cyMinChild", _WinAPI_HiWord($dwBtnSize)) ; was _WinAPI_LoWord($dwBtnSize)
	DllStructSetData($tINFO, "cx", $iDefaultWidth) ;// The default width is the width of the buttons.
	DllStructSetData($tINFO, "wID", _GUICtrlRebar_GetBandCount($hwndRebar))
	;// Add the band that has the toolbar.
	$pMemory = _MemInit($hwndRebar, $iSize + $iBuffer, $tMemMap)
	$pText = $pMemory + $iSize
	DllStructSetData($tINFO, "lpText", $pText)
	_MemWrite($tMemMap, $pINFO, $pMemory, $iSize)
	_MemWrite($tMemMap, $pBuffer, $pText, $iBuffer)
	;// Add the band that has the combobox
	If _GUICtrlRebar_GetUnicodeFormat($hwndRebar) Then
		$iResult = _SendMessage($hwndRebar, $RB_INSERTBANDW, $iIndex, $pMemory, 0, "int", "ptr") <> 0
	Else
		$iResult = _SendMessage($hwndRebar, $RB_INSERTBANDA, $iIndex, $pMemory, 0, "int", "ptr") <> 0
	EndIf
	_MemFree($tMemMap)
	Return $iResult
EndFunc   ;==>_GUICtrlRebar_AddToolBarBand
    Attachments (0)
Change History (4)
comment:1 Changed 18 years ago by Jpm
- Owner set to Gary
- Status changed from new to assigned
comment:2 Changed 18 years ago by Gary
- Resolution set to fixed
- Status changed from assigned to closed
comment:3 Changed 18 years ago by Jon
- Milestone set to 3.2.11.0
comment:4 Changed 18 years ago by Gary
- Component changed from AutoIt to Standard UDFs
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.
Note: See
        TracTickets for help on using
        tickets.
    

(In [2758]) Fixed #9: _GUICtrlRebar_AddToolBarBand Button height clipped when Toolbar added to Rebar