[C++/MFC] Nieuw tabblad wordt niet goed weergegeven *

Pagina: 1
Acties:

  • Douwe63
  • Registratie: September 2003
  • Laatst online: 23-05 14:40
Ben bezig met een MFC applicatie die je zou kunnen vergelijken met Excel, een workbook met tabbladen met daarop grids (ObjectiveGrids van Stringray met doc/view architectuur).

Nu voeg ik runtime een nieuw tabblad toe maar nu verschuift het grid heel ietsjes en ik mis ook een lijntje in de tab-balk. Nu kwam ik er achter dat wanneer ik het applicatiewindow maximaliseer en weer terug breng naar zijn normale staat dat dan het probleem/verschijnsel weg is.

Alleen, hoe kan ik dit nu via code oplossen? Moet ik een redraw doen van het tabcontrol, het frame of iets anders?

Op de website van de fabrikant kwam ik iets tegen wat er wel op leek maar zodra ik dit doe hangt de hele handel:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void CMyControlBar::AddTabs()
{
   ASSERT(::IsWindow(m_wndTab));    
   ASSERT(::IsWindow(m_wndNew));

   m_wndTab.InsertTab(&m_wndNew, 0, _T("New Tab"));
   m_wndTab.SetTabIcon(0, IDI_ICON1);
    
   //Now get the client rect of the tab window and use this dimension to resize the tab control
   CRect rectTab;
   m_wndTab.GetClientRect(rectTab);

   SECTabControlBase* pTabCtrl = (SECTabControlBase*)m_wndTab.GetTabControl();
   pTabCtrl->SetWindowPos(&wndTop, rectTab.left, 0, rectTab.Width(), 0, SWP_NOREDRAW);

   m_wndTab.SendMessage(WM_SIZE, 0, MAKELPARAM(rectTab.Width(), rectTab.Height()));

   m_wndTab.Invalidate(TRUE);

   m_wndTab.ActivateTab(0);
    
}


.modbreak: code tags toegevoegd, denk hier voortaan zelf aan

[ Voor 8% gewijzigd door .oisyn op 29-12-2003 18:51 ]


Verwijderd

Mja ehm ik ken het pakket niet maar ik zou zeggen iets van een Invalidate(). Maar die zie ik ook al in je codevoorbeeld staan en je zegt dat de 'hele handel dan hangt' maar je zegt niet waar precies, dus dan wordt het wild gokken.

Gok 1: Ik zie daar SWP_NOREDRAW staan. Wellicht zijn er andere parameters die wel een redraw forceren?

Gok 2: Stuur eens een WM_SIZE, WM_RESIZE of iets van die strekking naar de container van je tab control.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Ik meende dat bij een bepaalde window style ( iets met H en V redraw ) er onnauwkeurigheden in de window coordinaten kunnen ontstaan maar ik kan het niet vinden ... :(

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.