Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS General Discussion » 2 issues found in 2.54 Collapse All
Subject Author Date
Ferdie Barbero Jun 7, 2006 - 11:55 AM

CExtSplitterWnd
- OnDrawSplitter() override is not called anymore

CExtSliderWnd
- Draws only the scroll thumb (no ticks and background bar) when using CExtPaintManagerOffice2007_Impl-derived paint manager

Technical Support Jun 8, 2006 - 4:55 AM

We cannot confirm this problem with the splitter window. You can set the breakpoint at the beginning of the CExtSplitterWnd::OnDrawSplitter() virtual method and run the DRAWCLI sample. You will see the method is invoked after you split the view window horizontally or vertically.

We confirm that the second problem exists and will fix it soon.

Ferdz B Jun 9, 2006 - 12:21 AM

I’m using static splitter perhaps that’s why you cant confirm it. DRAWCLI uses dynamic splitters.

SInce I dont have scroller (m_bHasH/VScroll vars are false), OnDrawSplitter is not called in OnPaint() but rather inside the DrawAllSplitBars (also called in OnPaint).

Inside CExtSplitterWnd::DrawAllSplitBars you have this block of code



if( pPM->m_clrForceSplitterBk != COLORREF(-1L) )
{
pDC->FillSolidRect( rcClient, pPM->m_clrForceSplitterBk );
return;
}
else if((! pPM->GetCb2DbTransparentMode(this) )
|| (! pPM->PaintDockerBkgnd(true, *pDC, rcClient, rcWnd ) ) )
{
COLORREF clrFill =pPM->GetColor( CExtPaintManager::CLR_3DFACE_OUT );
pDC->FillSolidRect( rcClient, clrFill );
}
else
return; // <---- this is the bug I think
// ... because it’s preventing the call to base class
// DrawAllSplitBars below which calls OnDrawSplitter eventually

CSplitterWnd::DrawAllSplitBars(pDC, cxInside, cyInside);


BTW, as a temporary fix, I commented out the "else return;"

Technical Support Jun 9, 2006 - 8:07 AM

Yes, we confirm that the lines can be uncommented to see the OnDrawSplitter() virtual method invoked with static splitters. We thought that the main ideas of the CExtSplitterWnd class is providing a skinned look of splitter areas and skinned toolbar windows in dynamic splitters. The CExtSplitterWnd class can be replaced with the classic CSplitterWnd class if you repaint splitter areas completely.

Ferdz B Jun 9, 2006 - 2:29 PM

> we confirm that the lines can be uncommented
I suppose you mean "we confirm that the lines can be commented out"

Actually my application override is not completely drawing the splitter, I’m just drawing thin (single pixel) line arround the active splitter pane. That’s why it needs the CExtSplitterWnd to draw the a splitter that matches the prof-uis theme. So I think it’s pretty important for you to consider fixing it. BTW 2.53 was working.

Thanks.