|
|
|
|
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.
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.
|
|