oui mais si la dialog appelle une fonction de la dll, la dll doit bien connaître la dialog dans laquelle s'execute sa fonction non ?
Version imprimable
oui mais si la dialog appelle une fonction de la dll, la dll doit bien connaître la dialog dans laquelle s'execute sa fonction non ?
je crois que je vais péter un cable 8O :wink:
on reprend...
si je fais :
dans ma fonction "modifier" appelée par le clic sur le menu contextuel, le tout géré dans ma Dll :Code:
1
2
3
4 CWnd *pWnd=this->GetActiveWindow(); pWnd->GetDlgItem(1055)->PostMessage(WM_KEYDOWN); pWnd->GetDlgItem(1055)->PostMessage(WM_KEYUP);
il dit que pWnd c'est {MaDialog hWnd=???}. MaDialog étant définie dans l'exe et lancée par l'exe. Donc, il sait bien où il se trouve mais il n'a pas la valeur du hWnd voulu.
bon je ne sais pas comment tu fais mais moi j'ai fais le test suivant :
un prj boite de dialogue Multi-thread
un dll Multi-Tread
dans la dll une fonction:
dans la boite de dialogue sur l'appel d'un bouton :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 // header #ifdef __cplusplus extern "C" { #endif // Fonctions initiales. __declspec(dllexport) void FctAppel(CWnd *pWnd); #ifdef __cplusplus } #endif // code void FctAppel(CWnd *pWnd) { TRACE1("\nHWnd :%X",pWnd->m_hWnd); TRACE1("\nHWndMFC :%X",AfxGetMainWnd()->m_hWnd); }
pour les 2 traces on obtient bien le bon handle de fenetre.Code:
1
2
3
4
5
6 void CTestDlgDlg::OnButton1() { // TODO: Add your control notification handler code here FctAppel(this); }
8O
merci ! :D