#286 closed Bug (No Bug)
_GUICtrlReBar_AddBand() UDF: controls move off rebar bands after beta 3.2.11.7
| Reported by: | rover | Owned by: | Gary |
|---|---|---|---|
| Milestone: | Component: | Standard UDFs | |
| Version: | 3.2.12.0 | Severity: | None |
| Keywords: | Cc: |
Description
Problem using _GUICtrlReBar_AddBand() with standard controls after beta 3.2.11.7
tested with GUICtrlCreateInput() and GUICtrlCreateButton()
Running XP SP2+ EN X86
tested ok in prod 3.2.10.0 and beta 3.2.11.7
untested in 3.2.11.8 or 3.2.11.9
tested as problem in 3.2.11.10 up to 3.2.12.0-rc4
Example:
run and minimize to taskbar, then restore.
control will move from rebar band to overlap dtp control
adjusting rebar manually will move control back to band
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiReBar.au3>
#include <GuiDateTimePicker.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
Opt("MustDeclareVars", 1)
Global $hgui, $hReBar, $hDTP, $h
$hgui = GUICreate("Rebar", 400, 396)
$hReBar = _GUICtrlReBar_Create($hgui, BitOR($CCS_NODIVIDER, $CCS_TOP))
$hDTP = _GUICtrlDTP_Create($hgui, 0, 0, 190)
_GUICtrlReBar_AddBand($hReBar, $hDTP, 120, 120, "", 0)
$h = GUICtrlCreateButton("Exit", 0, 0, 120, 20)
;$h = GUICtrlCreateInput("Input control", 0, 0, 120, 20)
_GUICtrlReBar_AddBand($hReBar, GUICtrlGetHandle($h), 120, 200, "Name:", 1)
GUISetState(@SW_SHOW)
Sleep(1000)
GUISetState(@SW_MINIMIZE)
Sleep(1000)
GUISetState(@SW_RESTORE)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Attachments (0)
Change History (4)
comment:1 Changed 17 years ago by Gary
comment:2 follow-up: ↓ 3 Changed 17 years ago by Gary
- Resolution set to No Bug
- Status changed from new to closed
The rebar is not part of the built-in functions so you'll have to make sure it refreshes. The built-in controls created are going to repaint at the location specified when created.
comment:3 in reply to: ↑ 2 Changed 17 years ago by anonymous
Replying to Gary:
The rebar is not part of the built-in functions so you'll have to make sure it refreshes. The built-in controls created are going to repaint at the location specified when created.
That's the solution I came up with, but I found only the second call is needed.
_GUICtrlRebar_ShowBand($hReBar, 0, False) followed by 'True' causes flashing.
I use this WM_NCPAINT message handler in a Gui with 4 bands. Toolbar/GUICtrlCreateButton()/2x GUICtrlCreateInput()
seems to work OK, any suggestions?
I guess the help file examples that use bands and built-in controls will have to be updated.
Thanks Gary
GUIRegisterMsg($WM_NCPAINT, "MY_WM_NCPAINT")
Func MY_WM_NCPAINT($hWnd, $Msg, $wParam, $lParam)
If $wParam = "0x00000001" Then
If IsHWnd($hReBar) Then
Local $cnt = _GUICtrlRebar_GetBandCount($hReBar)
If $cnt Then
For $i = 0 To $cnt -1
_GUICtrlRebar_ShowBand($hReBar, $i, True)
Next
EndIf
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
comment:4 Changed 17 years ago by rover
the above comment should have been from 'rover'
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.

Appears to be a repaint issue.
Show/Hide Band(s) does a redraw of the rebar.
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GuiReBar.au3> #include <GuiDateTimePicker.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <GuiConstantsEx.au3> Opt("MustDeclareVars", 1) Global $hgui, $hReBar, $hDTP, $h $hgui = GUICreate("Rebar", 400, 396) $hReBar = _GUICtrlReBar_Create($hgui, BitOR($CCS_NODIVIDER, $CCS_TOP)) $hDTP = _GUICtrlDTP_Create($hgui, 0, 0, 190) _GUICtrlReBar_AddBand($hReBar, $hDTP, 120, 120, "", 0) $h = GUICtrlCreateButton("Exit", 0, 0, 120, 20) ;~ $h = GUICtrlCreateInput("input", 0, 0, 120, 20) _GUICtrlReBar_AddBand($hReBar, GUICtrlGetHandle($h), 120, 200, "Name:", 1) GUISetState(@SW_SHOW) Sleep(1000) GUISetState(@SW_MINIMIZE) Sleep(1000) GUISetState(@SW_RESTORE) _GUICtrlRebar_ShowBand($hReBar, 0, False) _GUICtrlRebar_ShowBand($hReBar, 1, False) Sleep(1000) _GUICtrlRebar_ShowBand($hReBar, 0, True) _GUICtrlRebar_ShowBand($hReBar, 1, True) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd