2 pb differents : IHM dans thread secondaire et cast en classe heritee
bonjour à tous,
Voilà, j'ai deux problèmes :
1/
Pour une application, utilisant visual2008 et les MFC, je crée un thread dans lequel je crée mon IHM principale (create (IDD...) puis ShowWindow()).
A la sélection d'un item du menu de l'IHM principale, je souhaite crée une boite de dialogue modale dont l'IDD est attaché à une classe.
Au final, à l'affichage de la deuxieme boite de dialogue, il n'est plus possible de cliquer, ni sur l'une ni sur l'autre, comme si elles etaient occupées. En mode debug, je m'apperçois que le code est bien dans le peekMessage de la fonction DoModal(). Y aurait-il un conflit quelque part?
Pour illuster voici les parties du code :
Code:
1 2 3 4 5 6 7
| // Creation de l'IHM principale //
CIhmPrincipal main_ihm ;
//affichage de l'IHM principale
main_ihm.StartIhm();
...
//peekmessage() pour ecouter les autres threads |
Code:
1 2 3 4 5 6
| AfxGetApp()->m_pMainWnd = this;
this->Create(IDD_IHM_PRINCIPAL);
Fonction StartIhm() :
...
this->ShowWindow(SW_SHOWMAXIMIZED); |
Code:
1 2 3 4
| int result = 0;
this->SetForegroundWindow();
m_pcIhmSecond = new CIhmSecond(this);
result = m_pcIhmSecond->DoModal(); |
2/
Dans cette même appli, je partage une Queue entre differents threads :
queue<ClasseMere> g_queue
dans un thread, je remplie cette queue avec des objets de classe derivée à ClasseMere :
Code:
1 2 3 4
| ClasseFille1 obj1;
g_queue.push(obj1);
ClasseFille2 obj2;
g_queue.push(obj2); |
Dans un autre thread, je lis le contenu de g_queue et je veux faire un traitement different selon que l'objet situé en tête de g_queue soit de la classe ClasseFille1 ou de la classe ClasseFill2
=> comment faire puisque g_queue.front() retourne un objet de la classe ClasseMere???
Merci d'avance pour votre aide