Ah, now I see it.

I fixed it on my PC by changing #WM_SIZE to #WM_SIZING in the callback.
Makes the large window show almost no flicker when resizing right to left.
But as the saying goes: YMMV.

Code: Select all
Enumeration
#Main
#Main_Web
#Main_Combo
#Main_List
#Main_Container
#Main_Splitter
#Main_Panel
EndEnumeration
Global OldSplitterCallback
Global OldPanelCallback
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_WINDOWPOSCHANGED
ResizeGadget(#Main_Splitter,#PB_Ignore,#PB_Ignore,WindowWidth(#Main)-10,WindowHeight(#Main)-10)
ResizeGadget(#Main_Combo,#PB_Ignore,#PB_Ignore,GadgetWidth(#Main_Container),#PB_Ignore)
ResizeGadget(#Main_List,#PB_Ignore,#PB_Ignore,GadgetWidth(#Main_Container),GadgetHeight(#Main_Container)-25)
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure SplitterCallback(hWnd, uMsg, wParam, lParam)
Result=CallWindowProc_(OldSplitterCallback, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_ERASEBKGND
Result=1
Case #WM_WINDOWPOSCHANGED
RedrawWindow_(hWnd,0,0,#RDW_UPDATENOW)
Case #WM_MOUSEMOVE
RedrawWindow_(hWnd,0,0,#RDW_UPDATENOW)
EndSelect
ProcedureReturn Result
EndProcedure
Procedure PanelCallback(hWnd, uMsg, wParam, lParam)
Result=CallWindowProc_(OldPanelCallback, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_WINDOWPOSCHANGED
RedrawWindow_(hWnd,0,0,#RDW_UPDATENOW)
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(#Main,#False,#False,420,235,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
; WebGadget(#Main_Web,0,0,0,0,"")
PanelGadget(#Main_Panel,0,0,0,0)
AddGadgetItem(#Main_Panel,-1,"Sub-Panel 1")
AddGadgetItem(#Main_Panel,-1,"Sub-Panel 2")
AddGadgetItem(#Main_Panel,-1,"Sub-Panel 3")
CloseGadgetList()
ContainerGadget(#Main_Container,0,0,0,0)
ComboBoxGadget(#Main_Combo,0,0,160,200)
ListIconGadget(#Main_List,0,25,160,200,"Test",70,#PB_ListIcon_FullRowSelect|#PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(#Main_List,1,"Test2",160)
AddGadgetColumn(#Main_List,2,"Test3",60)
For i=0 To 100
AddGadgetItem(#Main_List,-1,"HelloHello"+#LF$+"HelloHelloHelloHello"+#LF$+"Hello")
Next
CloseGadgetList()
SplitterGadget(#Main_Splitter,5,5,410,225,#Main_Panel,#Main_Container,#PB_Splitter_Vertical)
EndIf
ResizeGadget(#Main_Splitter,#PB_Ignore,#PB_Ignore,WindowWidth(#Main)-10,WindowHeight(#Main)-10)
ResizeGadget(#Main_Combo,#PB_Ignore,#PB_Ignore,GadgetWidth(#Main_Container),#PB_Ignore)
ResizeGadget(#Main_List,#PB_Ignore,#PB_Ignore,GadgetWidth(#Main_Container),GadgetHeight(#Main_Container)-25)
hWnd=GadgetID(#Main_Container)
SetWindowLongPtr_(hWnd,#GWL_STYLE,GetWindowLong_(hWnd,#GWL_STYLE)|#WS_CLIPCHILDREN)
OldSplitterCallback=SetWindowLongPtr_(GadgetID(#Main_Splitter),#GWL_WNDPROC,@SplitterCallback())
OldPanelCallback=SetWindowLongPtr_(GadgetID(#Main_Panel),#GWL_WNDPROC,@PanelCallback())
SetWindowLongPtr_(GadgetID(#Main_Panel),#GWL_EXSTYLE,GetWindowLong_(GadgetID(#Main_Panel),#GWL_EXSTYLE)|#WS_EX_COMPOSITED&(~#WS_EX_TRANSPARENT))
SetParent_(FindWindowEx_(GadgetID(#Main_Panel),0,"msctls_updown32",0),GadgetID(#Main_Splitter))
SetWindowCallback(@WinCallback(),#Main)
Repeat
Until WaitWindowEvent()=#WM_CLOSE
Code: Select all
SendMessage_(GadgetID(#ListIcon), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_DOUBLEBUFFER , #LVS_EX_DOUBLEBUFFER)
Iirc Microsoft Windows XP or later only and themes activated.PrincieD wrote:This should solve your problem![]()
Code: Select all
SendMessage_(GadgetID(#ListIcon), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_DOUBLEBUFFER , #LVS_EX_DOUBLEBUFFER)
We're talking about the panel gadget not the ListIcon!!! I tried it anyhow and it made no difference.PrincieD wrote:This should solve your problem
Code: Select all
SendMessage_(GadgetID(#ListIcon), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_DOUBLEBUFFER , #LVS_EX_DOUBLEBUFFER)
Ahh my bad, sorryWe're talking about the panel gadget not the ListIcon!!! I tried it anyhow and it made no difference.
What I am saying is that if you add a button gadget to the panel gadget then the button is simply not rendered correctly here on Vista or XP because of the #WS_EX_COMPOSITED extended style.