2015-08-17 1 views
0

Salut (bien que message d'accueil obtient habituellement supprimé),fonction MFC de CTabCtrl :: HitTest retourne pour tout onglet « 1 » cliqué

J'utilise le contrôle CTabCtrl de MFC et essayez de déterminer quel onglet a été cliqué (pour faire glisser & déposez-le plus tard). Devrait être assez facile je pensais - de toute façon resté coincé avec la fonction HitTest qui renvoie "1" pour n'importe quel onglet est cliqué.

Comme j'ai commencé le projet très récemment, il n'y a littéralement qu'une poignée de lignes. La fonction mentionnée HitTest est utilisé dans le fichier Tdi.cpp dans CHlavniOkno :: CTDI :: fonction OnLButtonDown (code source complet à http://nestorovic.hyperlink.cz/cpp_mfc.zip):

afx_msg void CHlavniOkno::CTdi::OnLButtonDown(UINT flagy,CPoint bod){ 
    if (::DragDetect(m_hWnd,bod)){ 
     TCHITTESTINFO hti={bod}; 
     if (int idZalozky=HitTest(&hti)>=0) 
      parametryTazeneZalozky=new TParametryTazeneZalozky(this,idZalozky); 
    } 
    CTabCtrl::OnLButtonDown(flagy,bod); 
} 

je dois certainement avoir omis quelque chose minuscule, comme cela est presque toujours le cas. ..

Merci d'avoir regardé le problème.

Tomas

Répondre

1

La déclaration int idZalozky=HitTest(&hti)>=0 met idZalozky au résultat du test HitTest(&hti)>=0. Comme un test booléen cela retournera toujours 0 ou 1.

Vous voulez probablement:

int idZalozky=HitTest(&hti); 
if (idZalozky>=0) 
{ 
... 
} 
+0

Oh, oui, vous avez raison! J'ai dit que ça allait être quelque chose de terriblement stupide ...! :-))) – tomascz

+0

Ou vous pourriez aller avec if (** (** int idZalozky = HitTest (& hti) **) **> = 0). J'ai ajouté intentionnellement des espaces blancs à proximité des opérateurs. – sergiol