SplitterWnd

SplitterWnd - C++ - Programmation

Marsh Posté le 05-07-2003 à 16:33:56    

Hello, voila, le code suivant me genere un "debug assertion failed".  

Code :
  1. BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
  2. CCreateContext* pContext)
  3. {
  4. if (m_wndSplitter.CreateStatic(this,1,2))
  5. {
  6.  CRect rect;
  7.  GetClientRect(&rect);
  8.  CSize size = rect.Size();
  9.  size.cy-=150;
  10.  if (m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1))
  11.  {
  12.   if (m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CChatView),size,pContext))
  13.   {
  14.    if (m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CSendView),CSize(0,0),pContext))
  15.    {
  16.     if (m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CInfoVw),CSize(0,0), pContext))
  17.     {
  18.      //SetActiveView((CView*)m_wndSplitter2.GetPane(1,0));
  19.      return TRUE;
  20.     }
  21.    }
  22.   }
  23.  }
  24. }
  25. return FALSE;
  26. }


 
 
Je suis parti de ce code (qui marche...) :

Code :
  1. BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
  2. CCreateContext* pContext)
  3. {
  4. if (m_wndSplitter.CreateStatic(this,2,1))
  5. {
  6.  CRect rect;
  7.  GetClientRect(&rect);
  8.  CSize size = rect.Size();
  9.  size.cy-=150;
  10.  if (m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CChatView),size,pContext))
  11.  {
  12.   if (m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CSendView),CSize(0,0),pContext))
  13.   {
  14.    SetActiveView((CView*)m_wndSplitter.GetPane(1,0));
  15.    return TRUE;
  16.   }
  17.  }
  18. }
  19. return FALSE;
  20. }


 
Si quelqu'un a une idée...
 
Merci :)

Reply

Marsh Posté le 05-07-2003 à 16:33:56   

Reply

Marsh Posté le 06-07-2003 à 11:03:52    

Tout simplement car tu fais m_wndSplitter.CreateView(0,1,...) alors qu'a la creation de ce splitter tu lui dit 2 lignes mais 1 seule colonne.
 
m_wndSplitter.CreateView(1,0,...) ca marchera mieu


Message édité par VisualC++ le 06-07-2003 à 11:04:19
Reply

Marsh Posté le 06-07-2003 à 15:11:32    

VisualC++ a écrit :

Tout simplement car tu fais m_wndSplitter.CreateView(0,1,...) alors qu'a la creation de ce splitter tu lui dit 2 lignes mais 1 seule colonne.
 
m_wndSplitter.CreateView(1,0,...) ca marchera mieu


 
Non je pense pas....
Je divise d'abord ma fenetre en 1 ligne 2 col
         |
(0,0)   |     (0,1)
         |
 
ensuite je divise 0,0 en 2 ligne 1 col
 
0,0     |  
______|      (0,1)
         |
1,0     |
 
 
Donc c'est pas ca...(J'ai vérifié au cas ou mais non :) )


Message édité par gooopil le 06-07-2003 à 15:12:04
Reply

Marsh Posté le 06-07-2003 à 15:31:15    

En fait ca vient de ma classe CInfoVw
 
Elle dérive de CFormView et j'ai mis (il parait qu'il faut le mettre...)
dans le .h,  
DECLARE_DYNCREATE(CInfoVw)
 
dans le.cpp
IMPLEMENT_DYNCREATE(CInfoVw, CFormView)
 
 
Pourquoi elle marche pas ma view ? (Je l'ai créé avec Classwizard...Peut $etre une propriété de la ressource boite de dialogue qui ne devrait pas y etre ????


Message édité par gooopil le 06-07-2003 à 15:32:19
Reply

Marsh Posté le 09-07-2003 à 15:15:28    

Gooopil a écrit :


 
Non je pense pas....
Je divise d'abord ma fenetre en 1 ligne 2 col
         |
(0,0)   |     (0,1)
         |
 
ensuite je divise 0,0 en 2 ligne 1 col
 
0,0     |  
______|      (0,1)
         |
1,0     |
 
 
Donc c'est pas ca...(J'ai vérifié au cas ou mais non :) )


 
Desole j avais pas vu ta reponse, mais bon pareil j ai teste aussi et ca marche moi avec les index que je t ai indique et pas les tient (les tient ca assert) et par contre c 2 CView derived que j utilisais (la view de base cree avec le projet)

Reply

Marsh Posté le 09-07-2003 à 15:16:47    

Pour les propriete y a la DIALOG property a virer oui si je me souvient comem c une CFormView

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed