Bonjour à tous,

je vous explique mon petit souci : j'ai une boîte de dialogue CDialog à partir de laquelle je lance un Thread de Travail en cliquant sur un bouton.
De ce côté-là, tout va bien, j'ai fait une méthode LRESULT, j'ai ajouté ON_MESSAGE dans le message map, j'ai défini un message windows WM_APP+1.

Quand je lance mon Thread, j'aimerais utiliser une classe C++ que j'ai faite.

Le problème est comment j'utilise PostMessage pour envoyer des infos concernant la mise à jour des contrôles visuels (barre de progression...).

En effet, quand je met le code de ma classe directement dans le thread, ça marche parce que le message WM_APP+1 est défini dans la classe CDialog.

Mais si je crée une instance de ma classe dans le thread, alors je n'ai plus accès au message WM_APP+1 car il est privé.

Un petit bout de code juste histoire de :

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
 
// CDialog.cpp
#include "CDialog.h"
#include "FEMU.h"
#define WM_MESSAGE WM_APP+1
 
 
static UINT Thread(void *pParam)
{
      FEMU test(pParam); // instance de ma classe FEMU dans le thread
      return 0;
}
 
// FEMU.cpp
FEMU::FEMU(void *pParam)
{
      PostMessage(???)
}
J'espère avoir été clair. Merci d'avance pour votre aide.