Mes amis me font vraiment mal au sujet du problème auquel je suis confronté depuis quelques jours ... C'est simple ... Je veux communiquer entre deux ou plusieurs boîtes de dialogue par exemple s'il y a un test de CString variable. .Je veux que cette variable de test soit commune pour les dialogues/classes (en considérant chaque boîte de dialogue ayant des classes séparées) ... J'ai essayé beaucoup de méthodes, tout a échoué ... en dernier j'ai essayé cette méthode WM_COPYDATA ... même maintenant, je ne réalise pas Je voulais faire ...Problème dans la communication entre deux boîtes de dialogue via WM_COPYDATA?
Sender Class:
#define ORGININFO 1
typedef struct ShareMessage
{
CString mydata;
int myValue;
}MYDATA;
void CCopyDataDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
MYDATA myData;
COPYDATASTRUCT cData;
myData.mydata.SetString(L"Rakesh");
cData.dwData = ORGININFO;
cData.cbData = sizeof(myData);
cData.lpData = &myData;
HWND hwnd = (HWND)FindWindow(L"Dialog1",L"Test");
SendMessageA(m_hWnd,WM_COPYDATA,(WPARAM)hwnd,(LPARAM)(LPVOID)&myData);
Dialog1 dlg;
dlg.DoModal();
}
récepteur classe:
#define iMessage 1
typedef struct MyDatas
{
CString myData;
int myint;
}DATA;
PCOPYDATASTRUCT pData;
LRESULT Dialog1::WindowProc(UINT message,WPARAM wParam,LPARAM lparam)
{
if(WM_COPYDATA != NULL)
pData = (PCOPYDATASTRUCT)lparam;
switch(pData->dwData)
{
case iMessage:
MessageBoxA((HWND)AfxGetInstanceHandle(),(LPCSTR)(LPCTSTR)((DATA*)(pData->lpData))->myData,(LPCSTR)L"Test",MB_OK);
}
return 0;
}
dans ce qui précède, je ne sais pas ce qui est l'erreur Je fais mais il ne reçoit pas les données de la classe CCopyDialog ... S'il vous plaît aidez-moi avec ceci ...
thnx pour répondre Bob ..I J'apprécie votre aide .. Je fatigué que .. Il est toujours le même .. le commutateur (pData-> dwData) est toujours 0.do vous connaissez anythere méthodes ... – kiddo
Vous avez une erreur dans l'appel SendMessage je n'ai pas remarqué . J'ai édité ma réponse pour le montrer. –
non Bob, c'est toujours la même erreur ... Trouvez-vous quelque chose de mal dans la poignée de la fenêtre ou dans la réception du message ... parce que dans la classe Dialog1 pData-> dwData est toujours 0.plus sur le dans le message d'envoi le hwnd (c.-à-d. HWND hwnd = FindWindow (L "Dialog1", L "Test")) dit que NULL ... est ce que ça devrait aller .. – kiddo