TigrouMeow wrote:J'y comprends rieeeeeeeeeeeeen, merci une fois de plus de m'aider...
La méthode que je vous ai proposée doit fonctionner. Mais cela suppose que
vous compreniez ce que vous faites, sinon il faudra que vous dicte le
code. On en revient au débat de départ: si vous ne maîtrisez pas les bases
des MFC, on risque de tourner en rond.
C'est un projet urgent ou bien vous avez le temps de prendre le temps?
TigrouMeow wrote:
J'y comprends rieeeeeeeeeeeeen, merci une fois de plus de m'aider...
La méthode que je vous ai proposée doit fonctionner. Mais cela suppose que
vous compreniez ce que vous faites, sinon il faudra que vous dicte le
code. On en revient au débat de départ: si vous ne maîtrisez pas les bases
des MFC, on risque de tourner en rond.
C'est un projet urgent ou bien vous avez le temps de prendre le temps?
TigrouMeow wrote:J'y comprends rieeeeeeeeeeeeen, merci une fois de plus de m'aider...
La méthode que je vous ai proposée doit fonctionner. Mais cela suppose que
vous compreniez ce que vous faites, sinon il faudra que vous dicte le
code. On en revient au débat de départ: si vous ne maîtrisez pas les bases
des MFC, on risque de tourner en rond.
C'est un projet urgent ou bien vous avez le temps de prendre le temps?
TigrouMeow wrote:J'ai essayé d'implémenté comme vous me l'avez dit, donc dans mon doc
je trouve un :
BEGIN_MESSAGE_MAP(CWinTraceDoc, CDocument)
ON_COMMAND(LIBRARY_ADD, AddLibrary)
END_MESSAGE_MAP()
Et la déclaration de la fonction :
void CWinTraceDoc::AddLibrairy()
{
TRACE("AddLibraryn");
}
Et dans l'include du Doc je déclare le prototype comme ça :
afx_msg void AddLibrairy();
Il me sort une erreur :
AddLibrary : identificateur non déclaré.
... à moins que AddLibrairy ne soit pas une faute de frappe, je ne vois
pas...Suis désolé d'être aussi nul,
Il me semble surtout que vous voulez aller plus vite que la musique. Quand
j'étais petit, on apprenait l'alphabet en commençant par le A et on lisait
les livres et les documentations en commençant par le chapitre 1. On
apprenait les bases puis on construisait dessus. Il paraît que les choses
ne fonctionnent plus comme ça de nos jours, qu'il faut être productif,
gagner du temps, aller vite et construire les gratte-ciel en commençant
par le toit mais c'est dommage, je trouve ça bien pratique, comme méthode
de travail :-) .mais j'ai de plus en plus l'impression
que la MFC est très très mal faite de partout,
Comme je le disais, il faut d'abord se former à son fonctionnement. Les
MFC ne sont pas l'idéal comparées à d'autres frameworks (comme OWL) mais
elles sont plus solides qu'on ne le dit souvent. En termes de
programmation objet, le design est assez limite mais il ne faut pas
oublier que les MFC ont été conçues pour VC ++ 16-bit et que les
programmes écrits proprement il y a 13 ans pour VC++ 1.0 peuvent être
repris dan sla version actuelle pratiquement tels quels. C'est un avantage
que beaucoup d'entreprises ont apprécié mais cela a été fait au proix de
qulques concessions.
TigrouMeow wrote:
J'ai essayé d'implémenté comme vous me l'avez dit, donc dans mon doc
je trouve un :
BEGIN_MESSAGE_MAP(CWinTraceDoc, CDocument)
ON_COMMAND(LIBRARY_ADD, AddLibrary)
END_MESSAGE_MAP()
Et la déclaration de la fonction :
void CWinTraceDoc::AddLibrairy()
{
TRACE("AddLibraryn");
}
Et dans l'include du Doc je déclare le prototype comme ça :
afx_msg void AddLibrairy();
Il me sort une erreur :
AddLibrary : identificateur non déclaré.
... à moins que AddLibrairy ne soit pas une faute de frappe, je ne vois
pas...
Suis désolé d'être aussi nul,
Il me semble surtout que vous voulez aller plus vite que la musique. Quand
j'étais petit, on apprenait l'alphabet en commençant par le A et on lisait
les livres et les documentations en commençant par le chapitre 1. On
apprenait les bases puis on construisait dessus. Il paraît que les choses
ne fonctionnent plus comme ça de nos jours, qu'il faut être productif,
gagner du temps, aller vite et construire les gratte-ciel en commençant
par le toit mais c'est dommage, je trouve ça bien pratique, comme méthode
de travail :-) .
mais j'ai de plus en plus l'impression
que la MFC est très très mal faite de partout,
Comme je le disais, il faut d'abord se former à son fonctionnement. Les
MFC ne sont pas l'idéal comparées à d'autres frameworks (comme OWL) mais
elles sont plus solides qu'on ne le dit souvent. En termes de
programmation objet, le design est assez limite mais il ne faut pas
oublier que les MFC ont été conçues pour VC ++ 16-bit et que les
programmes écrits proprement il y a 13 ans pour VC++ 1.0 peuvent être
repris dan sla version actuelle pratiquement tels quels. C'est un avantage
que beaucoup d'entreprises ont apprécié mais cela a été fait au proix de
qulques concessions.
TigrouMeow wrote:J'ai essayé d'implémenté comme vous me l'avez dit, donc dans mon doc
je trouve un :
BEGIN_MESSAGE_MAP(CWinTraceDoc, CDocument)
ON_COMMAND(LIBRARY_ADD, AddLibrary)
END_MESSAGE_MAP()
Et la déclaration de la fonction :
void CWinTraceDoc::AddLibrairy()
{
TRACE("AddLibraryn");
}
Et dans l'include du Doc je déclare le prototype comme ça :
afx_msg void AddLibrairy();
Il me sort une erreur :
AddLibrary : identificateur non déclaré.
... à moins que AddLibrairy ne soit pas une faute de frappe, je ne vois
pas...Suis désolé d'être aussi nul,
Il me semble surtout que vous voulez aller plus vite que la musique. Quand
j'étais petit, on apprenait l'alphabet en commençant par le A et on lisait
les livres et les documentations en commençant par le chapitre 1. On
apprenait les bases puis on construisait dessus. Il paraît que les choses
ne fonctionnent plus comme ça de nos jours, qu'il faut être productif,
gagner du temps, aller vite et construire les gratte-ciel en commençant
par le toit mais c'est dommage, je trouve ça bien pratique, comme méthode
de travail :-) .mais j'ai de plus en plus l'impression
que la MFC est très très mal faite de partout,
Comme je le disais, il faut d'abord se former à son fonctionnement. Les
MFC ne sont pas l'idéal comparées à d'autres frameworks (comme OWL) mais
elles sont plus solides qu'on ne le dit souvent. En termes de
programmation objet, le design est assez limite mais il ne faut pas
oublier que les MFC ont été conçues pour VC ++ 16-bit et que les
programmes écrits proprement il y a 13 ans pour VC++ 1.0 peuvent être
repris dan sla version actuelle pratiquement tels quels. C'est un avantage
que beaucoup d'entreprises ont apprécié mais cela a été fait au proix de
qulques concessions.
4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Bonjour,
TigrouMeow wrote:4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
1. J'ai commis une erreur dans le code proposé: essayez en utilisant l'API
::PostMessage(...) - pas la méthode de CWnd - et en passant le handle de
la fenêtre en premier argument. Passer par le pointeur pose le même
problème que l'appel de UpdateAllViews depuis le thread, je pense. Voir la
page que vous avais déjà proposée: http://www.mvps.org/vcfaq/mfc/12.htm .
2. Si ça ne fonctionne toujours pas, utilisez
CWnd::SendMessageToDescendants et traitez le message au niveau de la View.
3. Si ça ne fonctionne toujours pas, envoyez le message directement à la
View. Les messages de commande "cascadent". S'ils ne sont pas traités au
niveau de la vue, par le biais des message maps, ils vont cascader
jusqu'au document. S'ils ne sont pas traités au niveau du document, ils
remontent jusqu'à la mainframe. Il y a une discussion sur cette méthode
là: http://codeproject.com/file/filechange.asp .
4. Vous pouvez aussi récupérer le message au niveau de la mainframe et
faire directement ceci:
CDocument* pDocument = GetActiveDocument();
pDocument->UpdateAllViews(NULL);
Il y a aussi une solution assez élégante proposée par J-P Franconieri là:
http://groups-beta.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_frm/thread/28e39a8ad93b522b/1aa7e5ab3417a946?q=mfc+UpdateALlviews+%22worker+thread%22&rnum=5#1aa7e5ab3417a946
Il y a nécessairement une de ces solutions (ou une combinaison de ces
solutions) qui fonctionne.Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Créez une structure dont vous passez l'adresse dans le LPARAM du message.
Bonjour,
TigrouMeow wrote:
4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
1. J'ai commis une erreur dans le code proposé: essayez en utilisant l'API
::PostMessage(...) - pas la méthode de CWnd - et en passant le handle de
la fenêtre en premier argument. Passer par le pointeur pose le même
problème que l'appel de UpdateAllViews depuis le thread, je pense. Voir la
page que vous avais déjà proposée: http://www.mvps.org/vcfaq/mfc/12.htm .
2. Si ça ne fonctionne toujours pas, utilisez
CWnd::SendMessageToDescendants et traitez le message au niveau de la View.
3. Si ça ne fonctionne toujours pas, envoyez le message directement à la
View. Les messages de commande "cascadent". S'ils ne sont pas traités au
niveau de la vue, par le biais des message maps, ils vont cascader
jusqu'au document. S'ils ne sont pas traités au niveau du document, ils
remontent jusqu'à la mainframe. Il y a une discussion sur cette méthode
là: http://codeproject.com/file/filechange.asp .
4. Vous pouvez aussi récupérer le message au niveau de la mainframe et
faire directement ceci:
CDocument* pDocument = GetActiveDocument();
pDocument->UpdateAllViews(NULL);
Il y a aussi une solution assez élégante proposée par J-P Franconieri là:
http://groups-beta.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_frm/thread/28e39a8ad93b522b/1aa7e5ab3417a946?q=mfc+UpdateALlviews+%22worker+thread%22&rnum=5#1aa7e5ab3417a946
Il y a nécessairement une de ces solutions (ou une combinaison de ces
solutions) qui fonctionne.
Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Créez une structure dont vous passez l'adresse dans le LPARAM du message.
Bonjour,
TigrouMeow wrote:4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
1. J'ai commis une erreur dans le code proposé: essayez en utilisant l'API
::PostMessage(...) - pas la méthode de CWnd - et en passant le handle de
la fenêtre en premier argument. Passer par le pointeur pose le même
problème que l'appel de UpdateAllViews depuis le thread, je pense. Voir la
page que vous avais déjà proposée: http://www.mvps.org/vcfaq/mfc/12.htm .
2. Si ça ne fonctionne toujours pas, utilisez
CWnd::SendMessageToDescendants et traitez le message au niveau de la View.
3. Si ça ne fonctionne toujours pas, envoyez le message directement à la
View. Les messages de commande "cascadent". S'ils ne sont pas traités au
niveau de la vue, par le biais des message maps, ils vont cascader
jusqu'au document. S'ils ne sont pas traités au niveau du document, ils
remontent jusqu'à la mainframe. Il y a une discussion sur cette méthode
là: http://codeproject.com/file/filechange.asp .
4. Vous pouvez aussi récupérer le message au niveau de la mainframe et
faire directement ceci:
CDocument* pDocument = GetActiveDocument();
pDocument->UpdateAllViews(NULL);
Il y a aussi une solution assez élégante proposée par J-P Franconieri là:
http://groups-beta.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_frm/thread/28e39a8ad93b522b/1aa7e5ab3417a946?q=mfc+UpdateALlviews+%22worker+thread%22&rnum=5#1aa7e5ab3417a946
Il y a nécessairement une de ces solutions (ou une combinaison de ces
solutions) qui fonctionne.Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Créez une structure dont vous passez l'adresse dans le LPARAM du message.
Bonjour,
TigrouMeow wrote:4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
1. J'ai commis une erreur dans le code proposé: essayez en utilisant l'API
::PostMessage(...) - pas la méthode de CWnd - et en passant le handle de
la fenêtre en premier argument. Passer par le pointeur pose le même
problème que l'appel de UpdateAllViews depuis le thread, je pense. Voir la
page que vous avais déjà proposée: http://www.mvps.org/vcfaq/mfc/12.htm .
2. Si ça ne fonctionne toujours pas, utilisez
CWnd::SendMessageToDescendants et traitez le message au niveau de la View.
3. Si ça ne fonctionne toujours pas, envoyez le message directement à la
View. Les messages de commande "cascadent". S'ils ne sont pas traités au
niveau de la vue, par le biais des message maps, ils vont cascader
jusqu'au document. S'ils ne sont pas traités au niveau du document, ils
remontent jusqu'à la mainframe. Il y a une discussion sur cette méthode
là: http://codeproject.com/file/filechange.asp .
4. Vous pouvez aussi récupérer le message au niveau de la mainframe et
faire directement ceci:
CDocument* pDocument = GetActiveDocument();
pDocument->UpdateAllViews(NULL);
Il y a aussi une solution assez élégante proposée par J-P Franconieri là:
http://groups-beta.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_frm/thread/28e39a8ad93b522b/1aa7e5ab3417a946?q=mfc+UpdateALlviews+%22worker+thread%22&rnum=5#1aa7e5ab3417a946
Il y a nécessairement une de ces solutions (ou une combinaison de ces
solutions) qui fonctionne.Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Créez une structure dont vous passez l'adresse dans le LPARAM du message.
Bonjour,
TigrouMeow wrote:
4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
1. J'ai commis une erreur dans le code proposé: essayez en utilisant l'API
::PostMessage(...) - pas la méthode de CWnd - et en passant le handle de
la fenêtre en premier argument. Passer par le pointeur pose le même
problème que l'appel de UpdateAllViews depuis le thread, je pense. Voir la
page que vous avais déjà proposée: http://www.mvps.org/vcfaq/mfc/12.htm .
2. Si ça ne fonctionne toujours pas, utilisez
CWnd::SendMessageToDescendants et traitez le message au niveau de la View.
3. Si ça ne fonctionne toujours pas, envoyez le message directement à la
View. Les messages de commande "cascadent". S'ils ne sont pas traités au
niveau de la vue, par le biais des message maps, ils vont cascader
jusqu'au document. S'ils ne sont pas traités au niveau du document, ils
remontent jusqu'à la mainframe. Il y a une discussion sur cette méthode
là: http://codeproject.com/file/filechange.asp .
4. Vous pouvez aussi récupérer le message au niveau de la mainframe et
faire directement ceci:
CDocument* pDocument = GetActiveDocument();
pDocument->UpdateAllViews(NULL);
Il y a aussi une solution assez élégante proposée par J-P Franconieri là:
http://groups-beta.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_frm/thread/28e39a8ad93b522b/1aa7e5ab3417a946?q=mfc+UpdateALlviews+%22worker+thread%22&rnum=5#1aa7e5ab3417a946
Il y a nécessairement une de ces solutions (ou une combinaison de ces
solutions) qui fonctionne.
Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Créez une structure dont vous passez l'adresse dans le LPARAM du message.
Bonjour,
TigrouMeow wrote:4. Dans mon thread, je poste comme ceci sur le CWnd* :
->PostMessage(WM_COMMAND,
MAKEWPARAM((LIBRARY_ADD, 0), 0));
1. J'ai commis une erreur dans le code proposé: essayez en utilisant l'API
::PostMessage(...) - pas la méthode de CWnd - et en passant le handle de
la fenêtre en premier argument. Passer par le pointeur pose le même
problème que l'appel de UpdateAllViews depuis le thread, je pense. Voir la
page que vous avais déjà proposée: http://www.mvps.org/vcfaq/mfc/12.htm .
2. Si ça ne fonctionne toujours pas, utilisez
CWnd::SendMessageToDescendants et traitez le message au niveau de la View.
3. Si ça ne fonctionne toujours pas, envoyez le message directement à la
View. Les messages de commande "cascadent". S'ils ne sont pas traités au
niveau de la vue, par le biais des message maps, ils vont cascader
jusqu'au document. S'ils ne sont pas traités au niveau du document, ils
remontent jusqu'à la mainframe. Il y a une discussion sur cette méthode
là: http://codeproject.com/file/filechange.asp .
4. Vous pouvez aussi récupérer le message au niveau de la mainframe et
faire directement ceci:
CDocument* pDocument = GetActiveDocument();
pDocument->UpdateAllViews(NULL);
Il y a aussi une solution assez élégante proposée par J-P Franconieri là:
http://groups-beta.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_frm/thread/28e39a8ad93b522b/1aa7e5ab3417a946?q=mfc+UpdateALlviews+%22worker+thread%22&rnum=5#1aa7e5ab3417a946
Il y a nécessairement une de ces solutions (ou une combinaison de ces
solutions) qui fonctionne.Question subsidiaire :
Le truc c'est que j'aimerais passer en arguments des valeurs
ou des objets.
Créez une structure dont vous passez l'adresse dans le LPARAM du message.
Cherchez également le sample MTRECALC dans votre doc, c'est exactement ce
que vous voulez faire. Désolé, je viens juste de découvrir son existence.
Cherchez également le sample MTRECALC dans votre doc, c'est exactement ce
que vous voulez faire. Désolé, je viens juste de découvrir son existence.
Cherchez également le sample MTRECALC dans votre doc, c'est exactement ce
que vous voulez faire. Désolé, je viens juste de découvrir son existence.
Cherchez également le sample MTRECALC dans votre doc, c'est exactement ce
que vous voulez faire. Désolé, je viens juste de découvrir son existence.
Cherchez également le sample MTRECALC dans votre doc, c'est exactement ce
que vous voulez faire. Désolé, je viens juste de découvrir son existence.
Cherchez également le sample MTRECALC dans votre doc, c'est exactement ce
que vous voulez faire. Désolé, je viens juste de découvrir son existence.
Au fait, si vous voulez je peux vous envoyer le programme, vous verrez
peut-être directement le problème...
Au fait, si vous voulez je peux vous envoyer le programme, vous verrez
peut-être directement le problème...
Au fait, si vous voulez je peux vous envoyer le programme, vous verrez
peut-être directement le problème...
Y'a forcément un truc qui ne vas pas, surtout que vous me dites que
je peux passer mes objects en paramètres, mais QUEL paramètre?
Je n'ai aucun paramètre sur mes fonctions qui sont censés
réceptionner mes messages... c'est des afx_msg void ReceiveMSG().
Si par malheur je met deux paramètres WPARAM et LPARAM, là
le compilo n'aime pas du tout.
Y'a forcément un truc qui ne vas pas, surtout que vous me dites que
je peux passer mes objects en paramètres, mais QUEL paramètre?
Je n'ai aucun paramètre sur mes fonctions qui sont censés
réceptionner mes messages... c'est des afx_msg void ReceiveMSG().
Si par malheur je met deux paramètres WPARAM et LPARAM, là
le compilo n'aime pas du tout.
Y'a forcément un truc qui ne vas pas, surtout que vous me dites que
je peux passer mes objects en paramètres, mais QUEL paramètre?
Je n'ai aucun paramètre sur mes fonctions qui sont censés
réceptionner mes messages... c'est des afx_msg void ReceiveMSG().
Si par malheur je met deux paramètres WPARAM et LPARAM, là
le compilo n'aime pas du tout.