j'ai un petit sous de migration de code (de VC6.0 à VC2005)

Voilà j'ai une appli qui possède plusieurs ToolBar qui sont positionnées les unes à côté des autres selon la largeur de la MainFrame et qui peuvent être soit cachées soit visibles.

Sous VC6.0 ça marche impeccable, par exemple GetWindowRect retour bien les bons paramètres de chaque ToolBar.

Sous VC2005 ça marche pas...
GetWindowRect fonctionne que si la ToolBar à été affichée au moins une fois.
j'ai même une erreur d'exécution avec les RecalcLayout() dans mon CMainFrame::OnCreate() au démarrage de mon application.

S'il existe une technique je suis preneur.
Merci d'avance

Ci dessous une de mes fonctions qui place une Toolbar à côté d'une autre :
Cette fonction est appelée dans MainFrame::OnCreate() à la place de certain DockControlBar();

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void CMainFrame::DockControlBarLeftOf(CToolBar* Bar,CToolBar* LeftOf)
{
CRect rect;
DWORD dw;
UINT n;
 
//RecalcLayout(); Ici je suis obliger de le retirer sous VC2005 car sinon ça plante.
LeftOf->GetWindowRect(&rect);
rect.OffsetRect(1,0);
dw=LeftOf->GetBarStyle();
n = 0;
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
 
DockControlBar(Bar,n,&rect);
}

balise [code] rajoutée par r0d. Merci d'y penser la prochaine fois.